(公司项目记录)------spring security 登录相关知识

       早之前看公司的项目的登录,感觉连基本的页面-->controller都不知道是怎么个流程。后来慢慢地,知道了公司登录用的是springSecurity。今天我在这里大致记录一下。

-------------------------大致的思路-----------------------------

“实现AuthenticationProvider,自定义参数验证

整体流程:
1.用户登录时,先经过自定义的passcard_filter过滤器,该过滤器继承了AbstractAuthenticationProcessingFilter,并且绑定了登录失败和成功时需要的处理器(跳转页面使用)
2.执行attemptAuthentication方法,可以通过request获取登录页面传递的参数,实现自己的逻辑,并且把对应参数set到AbstractAuthenticationToken的实现类中
3.验证逻辑走完后,调用 this.getAuthenticationManager().authenticate(token);方法,执行AuthenticationProvider的实现类的supports方法
4.如果返回true则继续执行authenticate方法
5.在authenticate方法中,首先可以根据用户名获取到用户信息,再者可以拿自定义参数和用户信息做逻辑验证,如密码的验证
6.自定义验证通过以后,获取用户权限set到User中,用于springSecurity做权限验证
7.this.getAuthenticationManager().authenticate(token)方法执行完后,会返回Authentication,如果不为空,则说明验证通过
8.验证通过后,可实现自定义逻辑操作,如记录cookie信息
9.attemptAuthentication方法执行完成后,由springSecuriy来进行对应权限验证,成功于否会跳转到相对应处理器设置的界面。

----------------------具体的实现(按照上面的流程)-------------------

1.web.xml中有securtiy.xml


2.securtiy.xml中配置了一堆过滤器链(不需要登录校验的,配置例外;其余的请求全部会被该过滤器拦截)


3.JyAuthenticationFilter(AbstractAuthenticationProcessingFilter)




4.具体的认证,查权限 也是我们去实现,返回UserDetails。


5.attemptAuthentication 方法最终返回一个Authentication。


6.通过Authentication来看登录成功还是失败,然后调用相应的处理器。



注意:登录校验前把访问的url记录,登录成功后, 在登录成功处理中可以设置跳转到之前访问页面。


参考博客:https://blog.csdn.net/bao19901210/article/details/52574340(感谢)


猜你喜欢

转载自blog.csdn.net/qq_24382583/article/details/80049593