【发布时间】:2020-10-09 05:29:57
【问题描述】:
我在我的应用程序中创建了一条私有路由,基本上我的应用程序中的所有路由都是私有的。因此,为了制作私有路由,我添加了一个状态isAuthenticated,默认情况下为 false,但当用户登录时,它变为 true。所以在这个isAuthenticated 状态下,我在私有路由组件中实现了一个条件。但是这个问题是当用户登录并刷新页面时。我被重定向到/ 主页。我不想那样。
我在这里使用令牌认证。
这是我的 PrivateRoute.js
import React from "react";
import { connect } from "react-redux";
import { Route, Redirect } from "react-router-dom";
const PrivateRoute = ({ isAuthenticated, component: Component, ...rest }) => (
<Route
{...rest}
render={(props) =>
isAuthenticated ? <Component {...props} /> : <Redirect to="/" />
}
/>
);
function mapStateToProps(state) {
return {
isAuthenticated: state.user.isAuthenticated,
};
}
export default connect(mapStateToProps)(PrivateRoute);
【问题讨论】:
-
在用户登录后将
token存储在localStorage中,并检查该localStorage中是否存在令牌。如果没有,请注销用户。如果是,让用户输入您的private route -
如果我同时使用经过身份验证和令牌可以吗?
-
最好从 localStorage 令牌更新
isAuthenticated。因为那将是真相的来源。应该有一个操作将isAuthenticated设置为 true 在从 localStorage 获得令牌后,以便您应用程序中的所有组件都知道该用户已通过身份验证。
标签: javascript reactjs