spring security 工作原理

一、结构概览

spring security 解决的问题就是“安全访问控制”,而这些无法避免对请求进行拦截,所以可以想到其使用的就是常见的Filter链。

    SecurityContextPersistenceFilter:守门员,出口也是入口,初始化相关框架环境 UsernamePasswordAuthernticationFilter:账号密码验证 ->AuthenticationManagert FilterSecurityInterceptor:授权验证->AccessDecisionManager ExecptionTranslationFilter: 异常拦截

二、认证流程

流程图:

根据上面的流程可以知道,使用者只要提供一个UserDeatilsService里面封装了查询出来的用户。

简单的自定义实现UserDetailsService

加密工作方式:

三、授权流程

流程图:

基于投票机制的三个实现类:

    AffirmativeBased:一个赞成就通过,都反对也通过(默认) ConsensusBased:少数服从多数 UnanimousBased:一个反对都反对,通过必须全部赞成

经过上面的分析,可以得出结论,一般情况下,在整个spring security框架中,认证需要使用者参与的部分就是用户信息的查询(UserDetailsService的实现),而授权的部分几乎不需要使用者进行参与,只要给用户绑定权限,资源分配权限就可以委托给框架进行校验了。

经验分享 程序员 微信小程序 职场和发展