前后端分离之SpringSecurity做JWT认证

前后端分离为何需要用户认证

HTTP协议是无状态的,前一步请求认证,后一步请求忘记
为了保证系统安全,就要验证用户是否处于登陆状态

传统认证方式

前后端分离项目中,在通过Restful API进行交互时,如何验证用户 登陆状态和权限??
》前端登陆,后端生成token并保存用户数据到redis或者Session中,然后将token存入前端
》前端发请求并携带token,后端通过token查询用户信息是否过期
缺点:请求劫持 https
XSS注入 设置httpOnly,使得cookie不被js读取,设置secure,使得cookie只能https传输。替换敏感字符
XSRF攻击,增加存储负担:对称加密,非对称加密

JWT认证实现

概念:以json对象进行传输,是一种简洁,自包含的标准JWT数据结构
作用:使用带签名的token进行用户和权限的验证
后端直接通过jwt获取用户信息,通过header的Authorization位进行效验
实现:
1)用户登录时做用户名密码校验;
2)用户登录后收到请求时 做token和权限的校验;
3)进行token的定时刷新
流程:
JWT认证流程
注:

  1. 后端登陆成功,将用户信息作为jwt负载,将头部和负载分别进行base64编码,拼接后进行签名,拼接后形成JWT
  2. 前端每次请求将jwt放入HTTP的header的Authorization位,防止了token泄露:::解决了XSS,XSRF问题
    优点:将用户状态分散到客户端,减轻服务端压力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值