上期我们学习了基于UsernamePasswordAuthenticationFilter的表单认证,接下来我们将对Spring Security授权相关知识点进行介绍并进行源码级解析。认证和授权是两个密不可分的好基友,只认证不授权,系统将不知道用户有哪些权限,能进行哪些操作。就像是一个公司只设置了门卫,只要是本公司职员就能进入(认证过程),但是没有明确的规章制度和上下级关系,进入公司以后具体有哪些权利和义务没人知道(授权),将导致公司陷入混乱无法运转。
一、Spring Security 授权控制原理解析
用户请求经过一系列的过滤器后到达FilterSecurityInterceptor,开始进行权限控制。
1、FilterSecurityInterceptor在调用doFilter之前调用其父类AbstractSecurityInterceptor的beforeInvocation()方法进行授权校验。
2、beforeInvocation()方法中调用了SecurityMetadataSource的getAttributes()方法