jwt总结

当前端访问时,没有跨域限制用session

有跨域限制就选择使用jwt

用户的信息通过token字符串的形式,保存在客户端,服务器通过还原token来认证身份

jwt由三个部分组成

Header   Payload    Signature

Payload 部分才是真正的用户信息

它是用户信息经过加密之后生成的字符串

Header和Signature 是安全性相关的部分‘

只是为了保证Token的安全性

JWT的使用方法

把JWT的字符串放在

Authorization:Bearer <token>

安装JWT相关的包,两个包

npm i jsonwebtoken express-jwt@5.3.3

jsonwebtoken 是用于生成jwt字符串

express-jwt 用于将jwt字符串还原成对象

const jwt=require(’jsonwebtoken‘)

const ejwt=require(’express-jwt‘)

定义secret 密钥

用于给jwt加密解密

调用jsonwebtoken包提供的方法

将用户信息加密成jwt字符串,响应给客户端

jwt.sign(

{username:user Info.username},

secreKey,//密钥

{expiresIn:"30s"}//过期时间

)

将JWT字符串还原成JSON对象

客户端每次访问那些又权限的接口时,都需要主动通过请求头中的Authorization 字段,将token字符串发送到服务器进行身份认证,此时服务器可通过express-jwt这个中间件自动将客户端发过来的token解析还原成json对象

app.use(eJWT({secret:secretKey})).unless(
{path:[/^\/api\//]})

//排除api开头的接口,以api接口开头的接口都不需要验证权限,比如注册,登录

express-jwt 解析成功之后会自动挂载到req.user上

捕获解析JWT失败后产生的错误

app.use((err,req,res,next)=>{

if(err.name=='UnauthorizedError'){
return res.send({
status:401,
message:"无效token"
})
}
return res.send({
status:500,
message:"未知错误"
})
})

【博学谷学习记录】超强总结,用心分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值