限制并发会话并使用Spring Security向用户提供正确的消息

时间:2016-12-29 10:15:06

标签: java spring-mvc spring-security

我想限制我的第二个会话,同一个用户尝试从不同的机器登录。 以下是我的Spring Security代码:

<form-login authentication-success-handler-ref="myAuthSuccessHandler"
        login-page='/login' username-parameter="username"
        password-parameter="password" authentication-failure-url="/loginfailed"/>

<logout logout-success-url="/logout" delete-cookies="JSESSIONID,the_cookie"/>

<session-management>
    <concurrency-control session-registry-alias="sessionRegistry" max-sessions="1"/>
</session-management>

现在使用这个我可以限制并发会话但是我无法向用户提供正确的消息,例如:&#34;用户已经从不同的机器登录&#34;。

1 个答案:

答案 0 :(得分:0)

实现或扩展身份验证失败处理程序,例如SimpleUrlAuthenticationFailureHandler

public class CustomFailureHandler extends SimpleUrlAuthenticationFailureHandler {

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
        AuthenticationException exception) throws IOException, ServletException {
    setDefaultFailureUrl("/loginfailed.jsp?status=" + "YOUR CUSTOM MESSAGE HERE");
    super.onAuthenticationFailure(request, response, exception);
}
}