NodeJs系列-Day08-JWT
NodeJs系列-Day08-JWT
小码同学JWT的工作原理
本地文件
JWT的组成部分
JWT通常由三部分组成,分别是Header(头部)、Payload(有效荷载)、Signature(签名)。
三者之间使用英文的.
分隔,格式如:Header.Payload.Signature
下面是JWT字符串的示例:
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ |
JWT的三个部分各自代表的含义
Payload
部分是真正用户信息
,它是用户信息经过加密
之后生成的字符串。
Header
和Signature
是安全性相关的部分,只是为了保证Token
的安全性。
JWT的使用方式
客户端收到服务器返回的JWT
之后,通常会将它储存在localStorage
或sessionStorage
中。
此后,客户端每次与服务器通信,都要带上这个JWT
的字符串,从而进行身份认证。推荐的做法是把JWT
放在HTTP
请求头的Authorization字段中,格式如下:
1 | Authorization:Bearer <token> |
安装JWT相关的包
安装一下两个相关的包:
1 | npm install jsonwebtoken express-jwt |
其中:
jsonwebtoken
用于生成JWT
字符串express-jwt
用于将JWT
字符串解析还原成JSON
对象
导入JWT相关的包
1 | // 导入JWT相关的包 jsonwebtoken express-jwt |
定义secret密钥
1 | // 定义secret 密钥 建议将密钥命名为 secretKey |
将JWT字符串还原为 JSON对象
注意:只要配置成功了 express-jwt中间件,就可以把解析出来的用户信息挂载到req.user属性上
客户端每次在访问那些有权限接口的时候,都需要主动通过请求头中的Authorization
字段,将Token
字符串发送到服务器进行身份认证。
此时,服务器可以通过``express-jwt这个中间件,自动将客户端发送过来的
Token解析还原成
JOSN`对像:
1 | // 一定要在路由之前配置解析 token 的中间件 |
使用req.user
获取用户信息
当express-jwt
这个中间件配置成功之后,即可在那些有权限的接口中,使用req.user
对象,来访问从JWT
字符串中解析出来的用户信息了,示例代码如下:
1 | // 登录用户的函数 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果