如何实现登录持久化

最近在写一个前后端分离系统,主要用到的技术栈是Vue(vuex,Vuerouter)+Nodejs(Koa具体模块此处省略),在前后端的登录功能基本实现后(主要包括数据交互,账号密码信息验证,数据库连接写入等等等等.............),突然发现!!!一个问题,在Vuerouter权限限制下,基本流程还算正常,但是登录限制的只有访问权限,如何让服务器知道该用户目前处于登陆状态....

经过短暂思考,初步思路:将账号信息保存到Cookie中,前端触发某些事件发送网络请求后,后端读取Cookie,如果账号存在,既该用户处于在线状态,but,先不谈把账号密码这么重要的信息保存在Cookie中是否合适,cookie保存缓存信息,在后端设置有效时间后,关闭浏览器并不能消除Cookie,并且每次发送网络请求在不考虑单独设置path的情况下,请求首部会默认携带上我们的cookie信息,所以,该方案可行。

emmmmmmmmmm.........既然如此,直接读取localStorage呢,localStorage同样是保存在客户端,不过这东西永久保存...在我这个需求下显然它不靠谱,所以pass。

session  这东西是保存在服务器的,占据了一小块内存,客户端访问后,查询对应的session信息,可以拿到一些比较私密的东西,好像我用不到他,而且占用了服务器内存,如果所有的账号信息我都保存到服务器里面,给服务器压力也挺大的,作为一个前端开发者,我对自己服务端的开发总有些心虚。

接下来是sessionStorage保存在客户端,并且关闭浏览器后则失效,woooooooooo~感觉有点靠谱了,同样暂时不考虑安全问题,把账号密码保存进去,服务器读取到sessionStorage里面数据后,则判定该账号在线,感觉...好像也没啥问题,可惜的是关闭浏览器后里面的数据信息就被销毁了,不能实现自动登录。

最后,该解决安全问题了,之前一直说暂时不考虑安全问题,可是可是可是,这么不加处理的把账号密码保存在客户端也太嚣张了吧,还是要想办法处理一下,前端把账号密码发送给后端时做一次加密,我用的md5,虽然现在md5挺容易破解的,但是也比不加密好点,凑凑合合吧,因为我的服务器是Koa,所以在后端收到加密信息后利用node的jsonwebtoken模块,生成一个对应的token返回给客户端,客户端把收到的token保存到cookie里,这样每次在发送网络请求后都会自动把cookie携带进去,服务端做一次简单的token验证!!!OK这个问题解决了!

收工!大吉大利,今晚吃鸡

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值