react路由守卫的简易实现,以及利用token实现登录和退出

react由于没有自行设置路由守卫。所以登录和退出时需要自己判断是否获得token值并且做出登录和退出的路由跳转操作。首先我们通过接口获得token值。

           window.sessionStorage.setItem('token',res.data.token)
          // console.log(sessionStorage.getItem('token'));
          if(sessionStorage.getItem('token')){
          //刷新页面用来重新渲染app节点
           window.location.reload(true)
          }

然后在app.js中判断是否获得token值。以便做路由切换。

render(){ 
    return sessionStorage.getItem('token') ? (
      <Router>
         
         <Frame>
           <Switch>
          <Route path='/admin' exact component={Admin}></Route>
          <Route path='/houseList' exact component={houseList}></Route>
          <Route path='/addhouseList' exact component={addHouseList}></Route>
          <Route path='/userlist' exact component={UserList}></Route>
          <Route path='/userpower' exact component={UserPower}></Route>
          <Route path='/houseimg' exact component={houseImg}></Route>
          <Route path='/houseanalyse' exact component={houseAnalyse}></Route>
          </Switch>
          </Frame>
         
      </Router>
    ):(
      <Router>
        <Switch>
         <Route path='/login' exact component={Login}></Route>
         <Redirect to='/login' />
        </Switch>
      </Router>
      
    )
  }

如果获得token切换到frame嵌套路由。如果没获得token则重定向到login页面。退出登录直接移除sessionStorge,并再次自动刷新页面退出登录。

         <Button
          type="primary"
          icon={<PoweroffOutlined />}

          onClick={()=>{
           sessionStorage.removeItem('token')
          if(!sessionStorage.getItem('token')){
          window.location.reload(true)
          }}
          style={{position:'absolute',right:'20px',top:'20px'}}
        >
          退出登录
        </Button>

这里用的antd的组件。也可以不使用。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值