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

时间:2019-03-13 11:15:29

标签: javascript html reactjs react-redux react-router

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

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:无法读取的属性'id'   空

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

我在这里做什么错了?

谢谢!

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

2 个答案:

答案 0 :(得分:0)

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

localStorage.setItem('name', value )

答案 1 :(得分:0)

我不确定您之前如何设置localStorage对象。

var userobj = { id : 12 }

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

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

这是需要做的。如果您收到的token具有ID,则必须先手动设置它:)