【发布时间】:2020-11-12 05:33:58
【问题描述】:
我正在创建一个带有令牌身份验证的简单 React Web 应用程序。一切正常,除非我定义了一个私有路由并且用户通过了身份验证,私有路由没有被返回。
App.js
const App = () => {
return(
<AuthState>
<AlertState>
<Router>
<Fragment>
<Alerts />
<Switch>
<Route path="/" exact={true} component={Login} />
<PrivateRoute exact path='/admin' component={Admin} />
</Switch>
</Fragment>
</Router>
</AlertState>
</AuthState>
);
};
这是我的 privateRoute.js:
const PrivateRoute = ({ component: Component, ...rest }) => {
const authContext = useContext(AuthContext);
const { isAuthenticated } = authContext;
// isAuthenticated is returning true at this point, but below is not returning my /admin
// path
return (
<Route {...rest} render={props => !isAuthenticated ? (
<Redirect to='/' />
) : (
<Component {...props} />
)} />
);
};
当用户通过身份验证时,应该自动调用 /admin 路径,但什么也没有发生。如果我已经登录,那么如果我手动输入url路径/admin,那么我可以看到它的内容。
【问题讨论】:
-
更改路线顺序
-
如果你
console.log(isAuthenticated)有没有什么时候是假的?另外,Login中是否有任何重定向,用于检查身份验证状态并在用户通过身份验证时重定向到/admin? -
我还没有在登录中进行验证
-
isAuthenticated on PrivateRoute.js 始终为真
标签: reactjs authentication react-router