HttpSessionContextIntegrationFilter 的文档说明如下
“如果由于某种原因无法从HttpSession获取有效的SecurityContext,则会创建并使用新的SecurityContext。创建的对象将是setContextClass(Class)方法定义的实例(默认为SecurityContextImpl。“
但是它说“已弃用。使用SecurityContextPersistenceFilter而不是。”
我已经交换到 SecurityContextPersistenceFilter ,但现在我无法弄清楚如何将实例设置为我们自己的SecurityContext实现。
我整天都在寻找但没有运气。我希望它不是一个盯着我的答案! :/非常感谢任何帮助。
答案 0 :(得分:0)
在Spring 3.2.4中,SecurityContextPersistenceFilter
获得SecurityContext
,如下所示:
SecurityContext contextBeforeChainExecution = repo.loadContext(holder);
默认repo
是HttpSessionSecurityContextRepository
,可以像这样实例化SecurityContext
:
protected SecurityContext generateNewContext() {
return SecurityContextHolder.createEmptyContext();
}
因此,如果您希望自己的策略生成新的SecurityContext
,则可以执行以下操作:
HttpSessionSecurityContextRepository
(让我们说出你的名字MySecurityContextRepository
)generateNewContext()
方法MySecurityContextRepository
注入SecurityContextPersistenceFilter
实例(不推荐使用setSecurityContextRepository()
setter)