Spring Security 3.0 Acl- 调用过程全说明

1. Spring Security通过继承AbstractSecurityInterceptor的子类进行AOP调用,用Around在要求调用的时候进行处理
2.从ContextHolder分离出SecureContext,并处理错误和null
3.从SecureContext中解析出Authentication
4.判断请求是否是要求安全的
5.如果是要求安全的,将进行安全检查
         a.根据AuthenticationManager返回的权限进行request认证
         b.根据AccessDecisionManager对request进行认证
         c.通过设置在RunAsManager的设定对run-as进行置换
         d.将控制权交给明确的子类,子类将实际执行相关过程。但子类执行完毕后它将返回一个InterceptorStatusToken。它将最终决定是重新
         调用还是中断AbstractSecurityInterceptor
         e.子类将通过afterInvocation(InterceptorStatusToken, Object)重新调用AbstractSecurityInterceptor
         f. 如果RunAsManager置换了权限,返回ContextHolder到object它在AuthenticationManager之后存在
         g. 如果AfterInvocationManager被定义,启动invocation manager并运行它,允许它替换返回给request的object
   6. 控制与object再次返回子类。子类将结果返回给最初的调用者

猜你喜欢

转载自chen-rojer-gmail-com.iteye.com/blog/1037975
今日推荐