如何检查用户是否登录然后重定向?

问题描述 投票:0回答:2

我已经尝试了所有可以找到的答案,这是我的路线:

const loggedIn = !!localStorage.getItem('token');

const Routes = () => (
    <div>
        <Switch>
            <Route exact path="/" render={() => (
                !loggedIn ? (
                    <Redirect to="/login" />

                ) : (
                    <Redirect to="/welcome" />
                )
            )}/>
</Switch>
    </div>
);

export default Routes;

但是,它仍然无法工作..我在其他容器上收到错误:

menuContainer.js:10未捕获的TypeError:无法读取null的属性“id”

constructor(props) {
        super(props);
        this.state = {
            userId: JSON.parse(localStorage.getItem('logged')).id,
            loginRole: localStorage.getItem('loggedRole')
        }
    };

我在这做错了什么?

谢谢!

编辑:如果用户没有登录,我没有任何ID。这就是重点。 :)如果用户未登录,则应重定向回/ login。

javascript html reactjs react-redux react-router
2个回答
0
投票

首先,您需要在localStorage中设置项目

localStorage.setItem('name', value )

0
投票

我不知道你之前如何设置localStorage对象。

var userobj = { id : 12 }

localStorage.setItem('logged',JSON.stringify(userobj))

然后尝试像JSON.parse(localStorage.getItem('logged')).id; //return 12一样

这就是它需要做的事情。如果你收到的token有id,你必须在获取之前手动设置它:)

© www.soinside.com 2019 - 2024. All rights reserved.