前言
本节内容是关于spring security安全框架授权流程的源码分析,spring security的授权流程主要是在FilterSecurityInterceptor过滤器中实现的。我们会通过源码层级的分析,了解清楚spring security的底层是如何实现用户授权的。
正文
1.配置一个请求路径的权限为USER_DEL,真实的用户只包含USER_LIST和USER_ADD权限
- 配置请求路径权限为user_del
- 真实的用户权限
2.先登录,然后访问/auth/user/list请求,进入FilterSecurityInterceptor拦截器处理用户的权限
3.调用beforeInvocation方法实现用户权限的处理
3.1根据请求路径调用obtainSecurityMetadataSource获取权限验证表达式
3.2调用authenticateIfRequired方法,从SecurityContextHolder对象获取用户和权限数据
3.3调用attemptAuthorization方法完成权限的校验
3.3.1传入当前用户的权限表达式和拥有的用户权限数据,及反问请求参数
3.3.2使用AccessDecisionManager权限决策管理器,调用decide方法判断用户权限
3.3.3遍历权限的投票器,验证用户是否拥有配置的权限
3.3.4调用vote方法完成权限的最终比对结果
4.在 ExceptionTranslationFilter过滤器中,完成权限匹配不通过的处理
4.1 根据异常类型,处理授权过程中的异常
4.2 根据授权信息是否存在处理授权异常信息
结语
关于spring securtity的授权流程源码解析的内容到这里就结束了,我们下期见。。。。。。