node 结合 token 验证登录过期

上一篇文章说了node结合mongodb和前端连接的具体使用方法。后面我又想到了,要做就做的像那么回事。把token验证也加进去。但是之前重来也没有搞过这个东西,只是听说过,不知道怎么下手。所以这一块着实饶了一些弯子,好在有广大的网友帮忙,最终欧冠也是解决了。所以这次就来说说我对它的用法。

传统基于服务器的验证方式

传统的验证方式是基于服务器的,就是把登陆信息存在服务端,每次登陆需要去辨别存储的登陆信息,一般都是通过session来实现,我们比较老的项目都是通过存储session来实现登陆验证的。

这样会有一些问题,比如每次认证用户发起请求时,服务器都需要创建一个用记录来存储信息,当越来越多的用户发起请求时,内存的开销也会不断的增加

基于token的验证原理

基于token的身份验证是无状态的,我们不用将信息存储在服务器或者session中。

token通过请求头传输,而不是把认证信息存储在服务器或者session中,就意味着可以从任意一种可以发送HTTP请求的终端向服务器发送请求。

基于Token的身份验证的过程如下:

1. 登陆时,客户端发送用户名密码
2. 服务端验证用户名密码是否正确,校验通过就会生成一个有时效的token串,发送给客户端
3. 客户端储存token,一般都会存储在localStorage或者cookie里面
4. 客户端每次请求时都带有token,可以将其放在请求头里,每次请求都携带token
5. 服务端验证token,所有需要校验身份的接口都会被校验token,若token解析后的数据包含用户身份信息,则身份验证通过,返回数据

我用的是express-jwt,首先就是对服务端代码的修改,要加的代码就是下面这两段。下面说的依赖都要自己下载。

其中的setting.js代码如下图。红框里的方法后面会用到的。首先调用这两个方法可以获得对于的公钥和私钥。这两个密钥一定要保存好。其中公钥是个前端使用的,用来加密一些数据,比如密码。私钥是后端用来解密的。

先看看前端如何使用公钥加密,先提前封装一个函数用来加密。在使用的时候调用这个方法即可。

这时候前端就把加密好的密码发给了后端,就算别人拦截了密码也不知道是什么,因为他没有不知道解密的密钥是什么。

再来后端拿到密码后怎么解密的,后端也是提前写好了解密的函数,在使用的时候调用。

这样就可以拿到密码了,后面再继续做一些别的判断。在登录成功后后端会生成一个唯一的token返回给前端,前端只需要在每次的请求头中加入这个token即可,后端会判断这个token值有没有过期。当然这个方法也是提前写好的额。

 

token过期的时间和请求头都是可以自己设置的。

好了关于node结合token验证登录过期的内容就是这么多了。

有喜欢的盆友可以关注我的公众号(科技生活大爆炸),上面会定期发布一些文章,总有一篇你喜欢的文章。

我做的个人博客现在也已经可以查看了,欢迎朋友们踩踩多多指导

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值