一个企业做网站推广的优势,专业建站工作室,安徽网站设计找哪家,做搜狗手机网站优JWT的认识
什么是 JWT JWT#xff08;英文全称#xff1a;JSON Web Token#xff09;是目前最流行的跨域认证解决方案。
JWT 的工作原理 总结#xff1a;用户的信息通过 Token 字符串的形式#xff0c;保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用…JWT的认识
什么是 JWT JWT英文全称JSON Web Token是目前最流行的跨域认证解决方案。
JWT 的工作原理 总结用户的信息通过 Token 字符串的形式保存在客户端浏览器中。服务器通过还原 Token 字符串的形式来认证用户的身份。 JWT 的组成部分 JWT 通常由三部分组成分别是 Header头部、Payload有效荷载、Signature签名。 三者之间使用英文的“.”分隔格式如下 下面是 JWT 字符串的示例 JWT 的三个部分各自代表的含义 JWT 的三个组成部分从前到后分别是
HeaderPayloadSignature 其中 Payload 部分才是真正的用户信息它是用户信息经过加密之后生成的字符串。 Header 和 Signature 是安全性相关的部分只是为了保证 Token 的安全性。 JWT 的使用方式 客户端收到服务器返回的 JWT 之后通常会将它储存在 localStorage 或 sessionStorage 中。 此后客户端每次与服务器通信都要带上这个 JWT 的字符串从而进行身份认证。推荐的做法是把 JWT 放在 HTTP 请求头的 Authorization 字段中格式如下 在 Express 中使用 JWT
1.安装 JWT 相关的包 运行如下命令安装如下两个 JWT 相关的包 其中
jsonwebtoken 用于生成 JWT 字符串express-jwt 用于将 JWT 字符串解析还原成 JSON 对象
2. 导入 JWT 相关的包
使用 require() 函数分别导入 JWT 相关的两个包 3. 定义 secret 密钥 为了保证 JWT 字符串的安全性防止 JWT 字符串在网络传输过程中被别人破解我们需要专门定义一个用于加密和解密的 secret 密钥
当生成 JWT 字符串的时候需要使用 secret 密钥对用户的信息进行加密最终得到加密好的 JWT 字符串当把 JWT 字符串解析还原成 JSON 对象的时候需要使用 secret 密钥进行解密
4. 在登录成功后生成 JWT 字符串
调用 jsonwebtoken 包提供的 sign() 方法将用户的信息加密成 JWT 字符串响应给客户端 5. 将 JWT 字符串还原为 JSON 对象 客户端每次在访问那些有权限接口的时候都需要主动通过请求头中的 Authorization 字段将 Token 字符串发送到服务器进行身份认证。 此时服务器可以通过 express-jwt 这个中间件自动将客户端发送过来的 Token 解析还原成 JSON 对象 6. 使用 req.user 获取用户信息 当 express-jwt 这个中间件配置成功之后即可在那些有权限的接口中使用 req.user 对象来访问从 JWT 字符串中解析出来的用户信息了示例代码如下