参考地址:spring文档
事实上,Spring Security不介意你把Authentication
对象放在里面SecurityContextHolder
。唯一的关键要求是,SecurityContextHolder
包含一个Authentication
代表在之前AbstractSecurityInterceptor
(我们将在后面看到更多)需要授权用户操作的主体。
您可以(和许多用户做)编写自己的过滤器或MVC控制器,以提供与不基于Spring Security的认证系统的互操作性。例如,您可能使用容器管理身份验证,使当前用户可从ThreadLocal或JNDI位置获得。或者,你可能为一个有遗留的专有认证系统,这是一个公司的“标准”,你几乎无法控制的公司工作。在这样的情况下,很容易让Spring Security工作,并仍然提供授权功能。所有你需要做的是编写一个过滤器(或等效的),从一个位置读取第三方用户信息,构建一个Spring Security特定的Authentication
对象,并将其放入SecurityContextHolder
。在这种情况下,您还需要考虑通常由内置的身份验证基础结构自动处理的事情。例如, 在将响应写入客户端脚注之前 ,您可能需要抢先创建HTTP会话以缓存请求之间的上下文:[响应已提交后无法创建会话。
如果你想知道如何AuthenticationManager
在一个现实世界的例子中实现,我们将在核心服务章节中看到。
http://blog.xqlee.com/article/124.html