Dva: 路由怎么根据用户是否登录来进行跳转

Created on 3 Oct 2017  ·  12Comments  ·  Source: dvajs/dva

在路由里写 onEnter 或者 onChange 不起作用

Most helpful comment

`//监听路由变化
hashHistory.listen(location => {
const token = kits.getCookies('token')

if (new RegExp('login').test(location.pathname)) {
  if (token) {
    app._store.dispatch(routerRedux.replace('/home'))
  }
} else {
  if (!token) {
    app._store.dispatch(routerRedux.replace('/login'))
  }
}

})`

All 12 comments

我是在 router 文件中 监听路由变化

可以贴下代码参考下吗?

`//监听路由变化
hashHistory.listen(location => {
const token = kits.getCookies('token')

if (new RegExp('login').test(location.pathname)) {
  if (token) {
    app._store.dispatch(routerRedux.replace('/home'))
  }
} else {
  if (!token) {
    app._store.dispatch(routerRedux.replace('/login'))
  }
}

})`

image

你这个是设置 cookie 的某个值(假使为a)等于后台返给你的 token ,然后通过判断 cookie 中的 a 是否有值来控制用户的登录是吧? 恩,这个可以实现 谢谢啊

不是cookie的某个值等于后台返回的 token,而是登录之后就会把token存在cookie的这个值中, 判断下cookie中有没有这个值就行了。 不存在并且不在登录页 就跳到登录页。
不过我这样做也有一个问题。

这样 如果token 失效, 但是还是存在在cookie中的话不会跳登录页,要另做处理

这个可以把本地的时间戳或者由服务器返回的时间戳也存放进去,判断当前时间和时间戳的时间差来处理吧

那这样的话需要去更新cookie?

恩,每次都得判断下..

@zhouyingkai1 麻烦问下 代码中kits 引用的是什么module

@k365266378 kits里面只是封装了一些方法, 上面截图用到的就是一个获取cookie的方法

Was this page helpful?
0 / 5 - 0 ratings