关于middleWare的问题

来源:8-9 注册&登录(2)

sangming

2019-09-10

图片描述

index.vue的代码如下:
图片描述

中间件checklogin.js代码如下:
图片描述

现在问题是这样的:
当用户在浏览器的地址栏里直接打开“我的页面”时,要在服务端就要判断是否已经登录,否则就要跳转到登录;
当登录成功以后,还要返回到原来的页面(例如:我的页面);

如何保存登录前的页面记录?
我能想到有四种方法:1、url的query方式,传给login页面;
2、vuex的方式
3、localStroage或者sessionStroage里
4、cookie

     第一种:不可行,因为当启用‘第三方’的平台同步登录时,就会有问题,它们不一定提供返回我们需要url query的功能,即使有这样方式,也可能会有字符长度限制问题;比如微信就会限制120字符)
     第二种:middeWare里使用不了vue-router push的复方石,也使用不了 window.localtion.href的方式跳转页面(我试了,这两种方式都会报错);我看你将middleware代码直接写vue文件就可以使用window了(我将middleware提取出来为啥不行呢)?
           所以使用了redirect之后 vuex被清空了,即使我使用vuex-persistedstate之类的,会提示:window undefined的错误
     第三种:window undefined;所以这种方式也不可行
     第四种:好像只有这种方式。但是我redirect之后,vuex的数据都没清空了,

我想问问你,这种方式要如何处理呢?我们token的过期时间是一个1小时,所以每隔1个小时,就要授权一次
望大神给个解决方案!!!

写回答

1回答

快乐动起来呀

2019-09-10

我觉得不是你的问题是后端token设计的问题,过期时间这么短肯定要再次验证,而你每次都保存用户密码也不太安全,一定要设计个登陆态,让用户可以自动登录

0
2
快乐动起来呀
回复
sangming
同学服务端里没有 window 呀,肯定访问不到
2019-09-11
共2条回复

Vue全家桶+SSR+Koa2全栈开发美团网

整合大前端8项技术,全面晋级全栈工程师,毕设/面试作品

2445 学习 · 1638 问题

查看课程