2017-08-22 114 views
1

私はSpring Coreバージョン4.1.6とSpringセキュリティ4.0.1を使用しています。タイムアウト時にユーザをログインページにリダイレクトするSpring Security

タイムアウト時にユーザーをログインページにリダイレクトします。

これまでの調査では、ApplicationListener<HttpSessionDestroyedEvent>を実装したため、タイムアウトとログアウトを正常に傍受することができます。

私はにHttpSessionDestroyedEventオブジェクトを持っています。このオブジェクトは、私がユーザーをリダイレクトするか、ログインモデルオブジェクトを返すことができるところから何らかの方法を持っていないようです。私の質問は、どのように私はユーザーをログインページにリダイレクトできますか?

私はthis urlを見ましたが、タイムアウトをインターセプトしません。私の質問はタイムアウトにもっと集中しています。

+1

[Spring Securityで自動的にログアウトする方法](https://stackoverflow.com/questions/27775651/how-to-make-automatically-log-out-with-spring-security)の可能な複製 – Syroezhkin

+0

IこのURLを見ましたが、タイムアウトを傍受しません。私の質問はタイムアウトにもっと集中しています。 – user4906240

+0

がspring security.xmlに含まれている可能性があります。アプリケーションでSimpleUrlLogoutSuccessHandlerを登録するために、追加のタグをに追加する必要がありますか? – user4906240

答えて

0

これにはいくつかのアプローチがあります。

<security:http auto-config="true"> 
    <security:intercept-url pattern="/admin/**" access="ROLE_ADMIN"/> 
    <security:intercept-url pattern="/userReged/**" access="ROLE_USER"/> 
    <security:form-login 
      login-page="/" 
      default-target-url="/somePage" 
      authentication-failure-url="/user/logfailed?error" 
      username-parameter="userName" 
      password-parameter="userPassword" /> 
    <security:logout 
      logout-success-url="/?logout"/> 
</security:http> 

1:最初に、あなたはそれが自動的にログインしていないリダイレクトするセキュリティで保護されたルートに到達したユーザー(/ userRegedのように/ **)は、特定のログイン・ページにlogin-pageを設定することで、あなたのapplicationContext.xmlに春のセキュリティの自動設定を使用することができますあなたはweb.xmlでこれを置くことができる春のセキュリティのためのタイムアウトを設定するために

@RequestMapping("/somePage") 
public String getSomePage(Model model, HttpServletRequest request) { 

    Principal principal = request.getUserPrincipal(); 
    if (principal != null) { 

     User activeUser = userService.getUserByPhone(principal.getName()); 
     // ... 

    } else { // user is not authenticated 
     System.out.println("user is not authenticated to proceed the somePage!!!!!!!"); 
     return "redirect:/"; 
    } 
} 

:方法は、ログインしたされているコントローラ内で手動で特定のルートにユーザーを確認することです

<session-config> 
    <session-timeout> 
     1440 
     <!--mins--> 
    </session-timeout> 
</session-config> 

クライアントを正確なタイムアウトでリダイレクトする場合は、クライアント側で自動的にページをある間隔で更新できます。

関連する問題