为了账号安全,请及时绑定邮箱和手机立即绑定

检查用户是否在 PrivateRoute 组件 React 上登录

检查用户是否在 PrivateRoute 组件 React 上登录

开心每一天1111 2021-11-04 15:35:29
我正在使用我的 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


查看完整回答
反对 回复 2021-11-04
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信