前后端交互:JWT认证流程

 1、认证流程
- 首先,前端通过web表单将自己的用户名和密码发送到后端的接口。这一过程一般是一个HTTP POST请求。建议的方式是通过SSL加密的传输(https协议),从而避免敏感信息被嗅探。

- 后端核对用户名和密码成功后,将用户的id等其他信息作为JWT Payload(负载),将其与头部分别进行Base64编号拼接后签名,形成一个JWT,形成的JWT(Token)就是一个形同111.zzz.xxx的字符串
- token (head.payload.singurater)

- 后端将JWT字符串作为登录成功的返回结果返回到前端,前端可以将返回的结果保存在localStorage或sessionStorage上,退出登录时前端删除保存的JWT即可

- 前端在每次请求时将JWT放入HTTp Header中的Authorization位。(解决XSS和XSRF问题)

- 后端检测是否存在,如存在验证JWT有效性。例如,检查签名是否正确;检查Token是否过期;检查Token的接收方案是否是自己(可选)

- 验证通过后后端使用JWT中包含的用户信息进行其他逻辑操作,返回相应的结果。

 2、JWT优势
- `简洁(Compact)`: 可以通过URL,POST参数或者在Http header发送,因为数据量少,传输速度也很快
- `自包含(Self-contained)`: 负载中包含了所有用户所需要的信息,避免了多次查询数据库
- 因为Token是以JSON加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都有支持
- 不需要服务端保存会话信息,特别适用于分布式微服务

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值