jwt

JWT

JWT是一种无状态的鉴权机制。将用户登录后的一些信息(比如用户Id)和存储时间等信息存储在一个加密过的字符串中,当服务器收到请求的时候,进行解密并直接使用信息
JWT的组成:使用base64编码描述jwt的头部、使用base64编码的payload,以及加密签名

JWT的组成

一个JWT实际上就是一个字符串,它由三部分组成,头部(base64).载荷(base64).签名(HS256(头部(base64).载荷(base64)))。比如jwt token串:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9sb2dpbiIsImlhdCI6MTU2MzkzMjgwMywiZXhwIjoxNTYzOTM2NDAzLCJuYmYiOjE1NjM5MzI4MDMsImp0aSI6ImxFVGJLZ1hCblFoMkk0dkUiLCJzdWIiOjU1LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.qIToKn3BgSb9-pg7YT8aUpPTnHPPynxkNMxsYsioZrQ

  1. 头部(header)
    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 (base64编码)
    {“typ”:“JWT”,“alg”:“HS256”}

  2. 载荷(Payload)
    eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9sb2dpbiIsImlhdCI6MTU2MzkzMjgwMywiZXhwIjoxNTYzOTM2NDAzLCJuYmYiOjE1NjM5MzI4MDMsImp0aSI6ImxFVGJLZ1hCblFoMkk0dkUiLCJzdWIiOjU1LCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0 (base64编码)
    {“iss”:“http://127.0.0.1:8000/api/login",“iat”:1563932803,“exp”:1563936403,“nbf”:1563932803,“jti”:“lETbKgXBnQh2I4vE”,“sub”:55,“prv”:"87e0af1ef9fd15812fdec97153a14e0b047546aa”}
    exp:存储时时间以便后续验证token是否过期
    sub:数据库中user_id

  3. 签名(Signature)
    HS256算法加密,加密时我们还需要提供一个密钥(secret)
    qIToKn3BgSb9-pg7YT8aUpPTnHPPynxkNMxsYsioZrQ

参考
[1]: https://bbs.huaweicloud.com/blogs/06607ea7b53211e7b8317ca23e93a891
[2]: https://learnku.com/laravel/t/27760

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值