spring security 基本原理
·
1、过滤器链
spring security本质上就是一个过滤器链(javaweb),由很多个过滤器组成,大概有十几个;
其中比较典型的过滤器:
- FilterSecurityInterceptor:是一个方法级(哪些方法能访问,哪些不能访问)过滤器,基本位于过滤器最底部:这个类实现了Filter接口,其中实现了很多方法,doFilter是真正的过滤方法。doFilter方法调用invoke方法,invoke中有before、after方法。
- ExceptionTranslationFilter:异常过滤器,用来处理在认证授权过程中抛出的异常,与FilterSecurityInterceptor代码结构类似。
- UsernamePasswordAuthenticationFilter:对login的post请求做拦截,校验在表单中的用户名、密码。逻辑是判断是否是post请求方式,如果是获取用户名和密码,验证。
2、过滤器加载过程
其实spring security出现得比springboot还要早,但是自从有了spirngboot之后,springboot对spring security提供了自动化配置方案,可以使用更少配置来使用。虽然有springboor,还是要了解spring security过滤器加载过程:
- 首先有一个叫DelegatingFilterProxy(springboot帮我们做了)的过滤器
- 具体的源码可参考:Spring Security过滤器链加载执行流程源码解析_java_猪先飞
- 大致流程图:

3、 两个重要的接口
在spring security应用中会用到两个重要的接口:
- UserDetailService
在实际项目中,账号和密码都是从数据库中查询的,所以需要通过自定义的逻辑控制机器认证逻辑。如果需要自定义逻辑时,只需要实现UserDetailService接口(查询用户名和密码的过程)
- PasswordEncoder
用于对user对象的密码进行加密
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)