我正在使用我的 Rails Api(DoorKeeper/Devise)上的用户身份验证制作我的第一个反应应用程序。我设置了expires_at反应local_storage并尝试在私有路由组件中进行验证。在这种情况下,我想验证用户令牌以让他访问路由“/”。我无法联系到 userSignedIn。如何从 PrivateRoute 组件访问此功能?// PrivateRoute.jsimport React from 'react';import { Route, Redirect } from 'react-router-dom'import userSignedIn from '../auth'const PrivateRoute = ({ component: Component, ...rest }) => ( <Route {...rest} render={(props) => ( userSignedIn === true ? <Component {...props} /> : <Redirect to={{ pathname: '/login', state: { from: props.location } }} /> )} />)export default PrivateRoute;// auth.jsconst userSignedIn = () => { if (localStorage.getItem('expires_at') !== null) { return new Date() < new Date(localStorage.getItem('expires_at')) } else { return false }}export default userSignedIn;谢谢
1 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
还没有时间测试这个,但是
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={(props) => (
userSignedIn() === true
? <Component {...props} />
: <Redirect to={{
pathname: '/login',
state: { from: props.location }
}} />
)} />
)
您需要调用该函数,userSignedIn()因为它是返回值的内容true/false(这是此处唯一的更改)userSignedIn === true->userSignedIn() === true
添加回答
举报
0/150
提交
取消