一、该问题的重现步骤是什么?
1. 未操作页面时间超过/src/util/auth.js中inFifteenMinutes字段设置的时间后,在操作页面会自动跳转到登录页面。复现时,可以将该字段设置小一点(比如60s)。
2. 不刷新登录页面的前提下,输入账号、密码和验证码后,不能进入系统,而是又回到登录页面(后端是显示登录成功的)。
二、你期待的结果是什么?实际看到的又是什么?
1、未操作页面时间超过inFifteenMinutes指定的时间后,不刷新登录页面能够正常登录。
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
SpringBlade(SpringBoot版),版本4.0.0
Saber,版本3.0.2
操作系统:Win10 企业版(2019)
四、请提供详细的错误堆栈信息,这很重要。
1、在不刷新的情况下登录时,断点显示获取不到isAuth。
2、src/util/auth.js中inFifteenMinutes字段的值并没有随着每次登录而刷新(断点信息忘了截图)。
五、若有更多详细信息,请在下面提供。
六、问题原因
1、isAuth字段所在的文件src/router/views/index.js中并不存在。
2、文件src/util/auth.js中getToken()方法获取的token已经过期,原因是在系统启动后第一次登录的时候执行了如下代码来获取过期时间:
var inFifteenMinutes = new Date(new Date().getTime() + 120 * 60 * 1000);
,即使后面多次登出、登录,这行代码却再也没有执行过,也就是过期时间却一直没有更新。所有导致axios.js的HTTPRequest拦截时调用getToken()获取不到,见下图:
六、解决办法
1、在src/router/views/index.js文件中进行如下修改:
2、在src/util/auth.js文件中进行如下修改,以在每次调用setToken()的时候更新token的过期时间。
扫一扫访问 Blade技术社区 移动端