相信兄弟们在写项目时,都必须要考虑用户信息安全的一个问题,那么这时候大多数兄弟选择使用token来保护用户信息。
但是又对token所设置的时间拿捏不准
token设置的时间长了,那么我们设置token的意义也就消失了,数据还是会被不法分子拦截、劫持。
token设置的时间短了,虽然说保障了我们用户的信息安全,但是在用户使用的过程中,token已过期就会需要我们用户重新登录,造成用户的体验感很差。
在这时候我们就要考虑,如何在确保用户信息安全的情况下,让用户有一个良好的体验呢?
如果我们设置两个token(一个长token,一个短token)是不是就可以解决这个问题了呢?
也就是本次要讲的双token(双JWT)认证了。
双token的原理也很简单:
通过定义两个token,长token(Refresh Token)和短token(Access Token)
在用户登录完成之后后端则会生成双token,并且将短token(Access Token)返回到前端用于数据的请求。
而长token(Refresh Token)则会留在后端,用于短token(Access Token)过期之后获取新的短token。
双token认证主要就是为了解决:
1、设置单token时,不安全容易被劫持,导致用户信息泄露的问题。
2、单token过期用户需要重新登录,降低用户体验。
3、降低对服务器的负载等问题的。
那么说了这么多,又如何实现双token认证呢?
1、在我们使用express后端创建token时,首先就是下载jsonwebtoken的node包
npm i jsonwebtoken
2、接下来呢就是在我们需要使用jsonwebtoken的文件中,导入我们的jsonwebtoken包
然后就是在我们新创建的token.js文件中导入我们下载好的包
const jwt = require('jsonwebtoken')
3、当我们基础配置完成之后就该,创建我们的token了
首先就是定义三个常量方便后续定义token使用
这里我们的密钥是随便输的,在我们实际的开发中,可以根据我们的需求传入
其次就是根据我们定义好的常量,创建两个token
4、创建完双token之后,也就到了我们最重要的一步,双token的验证
首先是短token的一个认证
这是长token的认证
4、当我们的token认证配置完成后一定不能忘了最重要的一步,那就是将属性和方法导出
这样就完成了我们token.js的配置了,后续在使用中导入我们的token.js文件直接使用方法即可,这就是双Token认证实现无感刷新。