首页 > 编程语言 > 详细

springsecurity认证总结

时间:2021-04-13 23:49:51      阅读:29      评论:0      收藏:0      [点我收藏+]

springsecurity是通过过滤器链来完成认证功能的。

技术分享图片

 

 左边两个绿色过滤器可以自己控制是否执行,蓝色橘色过滤器一定会执行。UsernamePasswordAuthenticationFilter的执行点是springsecurity配置类中 httpSecurity.formLogin(),如果没有这句配置是不会触发这个过滤器的,这个过滤器会要求提交方式是post,且是form提交,满足这两个条件后会将提交的用户名和密码封装成UsernamePasswordAuthenticationToken,并交给 AuthenticationManager去做具体校验,具体校验需要查询数据库,这部分需要自己编写,框架无法完成,需要在springsecurity配置类中通过auth.userDetailsService(UserDetailsService实现类)来配置自己的校验类,校验通过后会将返回的Authentication对象通过SecurityContextHolder.getContext().setAuthentication(authenticationToken);保存到当前线程内,FilterSecurityInterceptor是最后一个过滤器,会查看SecurityContextHolder里是否有authenticationToken,如果有authenticationToken代表通过校验,如果没有会判断这个url是否设置了允许匿名访问之类的处理,如果没有类似的设置就会抛异常,异常会被ExceptinTranslationFilter捕获。执行API后会执行 SecurityContextHolder.clearContext()清除认证对象。如果不想用 UsernamePasswordAuthenticationFilter,可以自己封装UsernamePasswordAuthenticationToken,自己创建AuthenticationManager调用校验逻辑。

springsecurity认证总结

原文:https://www.cnblogs.com/1--2/p/14655052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!