Spring security Spring安全性升级到3.1.0.RELEASE-找不到setContextClass来定义应使用哪个实例创建新的SecurityContext
HttpSessionContextIntegrationFilter的文档说明如下 如果由于任何原因无法从HttpSession获取有效的SecurityContext,则将创建并使用新的SecurityContext。创建的对象将是setContextClass(Class)方法定义的实例(默认为SecurityContextImpl) 但它说“已弃用。请改用SecurityContextPersistenceFilter。” 我已经切换到SecurityContextPersistenceFilter,但现在我不知道如何将实例设置为我们自己的SecurityContext实现Spring security Spring安全性升级到3.1.0.RELEASE-找不到setContextClass来定义应使用哪个实例创建新的SecurityContext,spring-security,Spring Security,HttpSessionContextIntegrationFilter的文档说明如下 如果由于任何原因无法从HttpSession获取有效的SecurityContext,则将创建并使用新的SecurityContext。创建的对象将是setContextClass(Class)方法定义的实例(默认为SecurityContextImpl) 但它说“已弃用。请改用SecurityContextPersistenceFilter。” 我已经切换到SecurityContextPersistence
我花了一整天的时间搜索,但没有运气。我希望这不是一个答案在我面前出现的情况!:/非常感谢任何帮助。在春季3.2.4,
SecurityContextPersistenceFilter
获得的SecurityContext
如下:
SecurityContext contextBeforeChainExecution = repo.loadContext(holder);
protected SecurityContext generateNewContext() {
return SecurityContextHolder.createEmptyContext();
}
默认的repo
是HttpSessionSecurityContextRepository
,它实例化了SecurityContext
,如下所示:
SecurityContext contextBeforeChainExecution = repo.loadContext(holder);
protected SecurityContext generateNewContext() {
return SecurityContextHolder.createEmptyContext();
}
因此,如果您希望自己的策略生成新的SecurityContext
,可以执行以下操作:
HttpSessionSecurityContextRepository
(假设您将其命名为MySecurityContextRepository
)generateNewContext()
方法MySecurityContextRepository
注入SecurityContextPersistenceFilter
实例(因为setSecurityContextRepository()
setter已被弃用)