感觉这是一个不可能的问题.....本人将token保存在cookie中,利用cookie缓存成功登录后,需求是想做一个欢迎页面,类似于:欢迎您×××来到×××,这样的案例。
经过我灵活的小脑瓜20s的思考,初步分析了以下几个难点:
1.登录页面和欢迎页面分别是两个毫不相干的路由
2.两个组件无父子关系
思路one:
1.因为要确保账号username的正确性,所以要在第一次的登录的成功回调.then里面书写代码
2.在.then中将正确的账号信息保存到vuex中
3.在欢迎页面拿到保存在vuex中的账号username
4.展示
this.$axios({
method: 'POST',
url: this.userID.url,
data:qs.stringify(this.userID)
})
.then((res)=>{
console.log(res);
if (res.data.results[0]) {
if (res.data.results[0].id !== 0) {
this.userToken = res.data.token;
this.$store.commit("ChangeisBactionAll")
this.$store.commit("usernameUpdata",this.userID.username)
return this.$router.push('/index')
}
}
结果.....呵呵事与愿违,没错我失败了,这么做无法解决:利用缓存登录后拿到账号信息问题,因为利用缓存登录实际上已经属于第二次登录,vuex中没有账号信息,它也并没有向服务器发送网络请求,也就没有.then啥事了。
思路two:
1.简单粗暴,直接缓存欢迎界面所需要展示的账号信息username
弊端:把账号信息暴露在客户端...啧~,有违安全准则,因为我的登录并没有验证码,容易被暴力破解(当然如果有人愿意暴力破解我这个小破站,我还是感觉很荣幸地),但是该方案可用。
思路three:
哈,为什么我要把账号username展示出去呢?在用户注册时增加一个昵称,然后缓存昵称,展示时展示昵称岂不是更好更亲切!
弊端:不属于解决问题的思路,属于逃避问题,自己的网站自己做主,如果是企业级开发可能会被领导或UI打死吧~