SpringSecurity&JWT(Springboot)

SpringSecurity&JWT(Springboot)

在这里插入图片描述

SpringSecurity&JWT的流程

在这里插入图片描述

登录校验大体流程

在这里插入图片描述

认证

在这里插入图片描述

Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。

AuthenticationManager接口:定义了认证Authentication的方法

UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法。

UserDetails接口:提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装成UserDetails对象返回。然后将这些信息封装到Authentication对象中。

个人理解:
认证
自定义登录接口,注入AuthenticationManager对象,封装Authentication对象(此时只有密码和用户名),AuthenticationManager调用DaoAuthenticationProvider 的方法认证, DaoAuthenticationProvider 再去调用userDetailsService的实现类 根据用户名 获取用户信息(包括 密码,权限),并返回userDetails对象,再通过PasswordEncoder比较Authentication和UserDetails的密码是否相等,相等就把权限信息存入Authentication中并返回Authentication对象,在Authentication得到用户信息,若认证成功,则使用工具类生成token,放入响应头返回前端,并把用户信息存入到redis中;
校验
登录之后,再访问其他接口获取资源,会通过一个自定义的Filter,用来解析token,得到userid,去redis中拿到用户信息(包括 密码,权限),存入SecurityContextHolder,然后会经过之后的过滤器

授权

设计数据库表,使用注解设置方法权限

例如 @PreAuthorize(“hasAuthority(‘system:test:list111’)”)

注销

从SecurityContextHolder中获取userid,通过userid删除redis中的用户信息即可完成退出系统;

%%资料或源码私聊或评论
%%ps:图片转载自B站up主三更

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值