一次spring-security利用经历
一个赛事记分项目是个单体应用,包括后台管理和平凡参赛人员两种角色。显然,后台管理人员是固定的,而参赛人员每个赛事是不一样的,要求后台管理人员和参赛人员都可以登录系统并操作差别的功能。很显着这是两种角色,每种角色须要利用差别的登录方式,而且每个角色的用户保存在差别的表中。此中管理员利用用户名密码登录,参赛人员利用队员配对登录方式。
系统利用spring-security作为安全框架,但是把login写到controller里,而非利用UsernamePasswordAuthenticationFilter。为了拦截UsernamePasswordAuthenticationFilter,在它前面添加了自定义Filterhttps://i-blog.csdnimg.cn/direct/cc662a5514d143b8853cff314bf38a1d.png
。在自定义Filter中实现获取用户信息功能。在设置类中设置AuthenticationManager,支持多个验证provider。https://i-blog.csdnimg.cn/direct/40f30c71f58a4a4780ecc2c2cf530862.png
在登录controller中分别实现两个登录接口,通过创建差别的AbstractAuthenticationToken实现类,spring-security框架自动找到相关的AuthenticationProvider并调用验证方法authenticate。
https://i-blog.csdnimg.cn/direct/6e34138bbabf437e98e1a71f817edfd0.png
此中supports方法用来选择支持相应AbstractAuthenticationToken的AuthenticationProvider。
总体流程是:登录接口调用登录方法->登录方法创建对应AbstractAuthenticationToken实现类,并调用AuthenticationManager.authenticate方法->AuthenticationManager根据token类型找到AuthenticationProvider->调用AuthenticationProvider.authenticate方法实行用户验证。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]