2016-12-29 8 views
1

同じユーザが別のマシンからログインしようとしている間に、2番目のセッションを制限します。 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> 

は、今私は、同時セッションを制限することができ、これを使用したが、私のようなユーザーに適切なメッセージを与えることができないのです:「すでに別のマシンからログインしているユーザー」に続き は私の春のセキュリティコードです。

答えて

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); 
} 
} 
+0

これは私の問題を解決しました。しかし、今私は1つの問題に直面している、ユーザーがブラウザを閉じるか、ログアウトせずにコンピュータをシャットダウンした場合、同じユーザは他のマシンからのログインを行うことができない。ユーザーは同じマシンからログインする必要があります。どんな助けも非常に高く評価されるでしょう。 –

+0

クライアント側でウィンドウのアンロードイベントをキャッチし、そこからログアウトURLを押します。したがって、ユーザーがブラウザを閉じるたびに、彼は最初にログアウトされます。 –

関連する問題