基于Node.js实现)身份验证(jsonwebtoken + cookie)与一键退出功能

基本流程

1.客户端(浏览器)进行注册或者登录的时候,将信息发送给服务器端
2.服务器利用这个信息签发一个令牌
2.服务器将这个令牌存入cookie里发送给客户端(浏览器)
3.在需要进行身份验证的地方调用这个令牌的信息进行验证

jsonwebtoken的安装

在命令终端里输入,

npm install jsonwebtoken

如果安装不成功可以试试淘宝镜像(在上面代码的后面加上淘宝镜像)

--registry=https://registry.npm.taobao.org

在这里插入图片描述

具体流程

一.令牌的签发与验证

1.签发
jwt.sign(payload, secretOrPrivateKey, [options, callback])

返回值是加密过后的令牌

payload(有效载荷)通俗讲就是对于接收者有用的数据
secretOrPrivateKey (密钥)通俗讲就是加密所用的钥匙
options: 可选项

algorithm (算法)(default: HS256)
expiresIn(过期时间): expressed in seconds or a string describing a time span zeit/ms.
…具体的可看官方文档:https://www.npmjs.com/package/jsonwebtoken

callback(回调函数)
Eg:
在这里插入图片描述
为了方便使用我将令牌的签发放在里user表的成员方法里
在这里插入图片描述

2.验证

参数与上面一样

jwt.verify(token, secretOrPublicKey, [options, callback])

callback(回调函数)里有两个参数 err,decodeToken(解密过后的令牌)

二.将令牌存入cookie

当用户进行登录或者注册的时候将令牌存入cookie,同时将令牌信息存入user信息的tokens里
(每进行一次登录就会有一个令牌签发)
在这里插入图片描述

三.身份验证

通过解密过后的令牌信息(里面有用户的id),找到这个用户,再比较里面的令牌信息是否一致,如果一致就通过,如果不一致就表明令牌失效。
在这里插入图片描述

四.退出所有登录

通过清空tokens,使上面的身份验证失败,从而退出所有客户端的登录
在这里插入图片描述
其它具体功能可以查找官方文档:https://www.npmjs.com/package/jsonwebtoken

五.有什么意见或建议欢迎提出

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐