我坐在这里是使用Spring Security 2.0的旧Java代码,必须将其迁移到Spring Security 3.0及更高版本。
我现在的问题是,有一个扩展ConcurrentSessionControllerImpl
的类已在Spring Security 3.0中通过重构而删除。关键是我找不到有关此重构的任何文档,也找不到Spring Security 2.0文档中的ConcurrentSessionControllerImpl
类。
该类将覆盖以下方法:
public void checkAuthenticationAllowed(final Authentication auth) throws AuthenticationException;
public void registerSuccessfulAuthentication(final Authentication authentication);
是否有迁移的方法,还是必须重写整个应用程序的安全层?
答案 0 :(得分:0)
由于Spring Security的重构,ConcurrentSessionControllerImpl
已大部分重构为org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy
。
registerSuccessfulAuthentication
最适合的位置
onAuthentication(Authentication authentication, HttpServletRequest request, HttpServletResponse response)
checkAuthenticationAllowed
现在是ConcurrentSessionControlStrategy
中的私有方法,可以通过以下方式部分自定义:
protected void allowableSessionsExceeded(List<SessionInformation> sessions, int allowableSessions, SessionRegistry registry);
protected int getMaximumSessionsForThisUser(Authentication authentication);
还可以配置一些设置器:
public void setExceptionIfMaximumExceeded(boolean exceptionIfMaximumExceeded);
public void setMaximumSessions(int maximumSessions);
有关ConcurrentSessionControlStrategy
的更多信息,请查看JavaDocs。