2013-07-25 11 views
5

私はWebポータルへのログイン用に春のセキュリティを実装しました。 1つの問題を除いて正常に動作します。セッションタイムアウトを5分に設定しました。タイムアウトが発生してユーザーが任意のURLをクリックすると、ログアウトページにリダイレクトされます。 しかし、ユーザーが再認証すると、ユーザーはデフォルトのターゲットURLであるホームページの代わりに最後のアクセスページに直接着いてしまいます。春のセキュリティは、ログインセッションのタイムアウト後に最後に要求されたページにリダイレクトされます

春のセキュリティファイルは以下の通りです:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 

     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 

    <http auto-config="true"> 
     <intercept-url pattern="/index.jsp" access="ROLE_ADMIN,ROLE_USER" /> 
     <intercept-url pattern="/home.html" access="ROLE_ADMIN,ROLE_USER" /> 
     <intercept-url pattern="/mdm/accessToken.html" access="ROLE_USER" /> 
     <intercept-url pattern="/mdm/enroll.html" access="ROLE_USER" /> 
     <intercept-url pattern="/mdm/installApp.html" access="ROLE_USER" /> 
     <intercept-url pattern="/mdm/checkStatus.html" access="ROLE_USER" /> 
     <intercept-url pattern="/mdm/searchDevice.html" access="ROLE_USER" />  
     <intercept-url pattern="/admin/*" access="ROLE_ADMIN" /> 
     <intercept-url pattern="/account/*" access="ROLE_ADMIN" /> 
     <intercept-url pattern="/user/*" access="ROLE_USER" />  

     <form-login login-page="/login.html" default-target-url="/home.html" 
        authentication-failure-url="/loginfailed.html" /> 
     <logout logout-url="/logout.html" logout-success-url="/logoutSuccess.html" invalidate-session="true" /> 
     <anonymous username="guest" granted-authority="ROLE_GUEST" /> 
     <session-management> 
      <concurrency-control max-sessions="1" /> 
     </session-management> 
     <session-management invalid-session-url="/logout.html" /> 
    </http> 

    <authentication-manager> 
     <authentication-provider> 
      <jdbc-user-service data-source-ref="dataSource" 
       users-by-username-query="select USER as username, password, 'true' as enabled from TBL_USER_MASTER where user=?" 
       authorities-by-username-query="select um.USER as username , rm.ROLE_NAME as authorities from TBL_USER_MASTER um,TBL_ROLE_MASTER rm 
      where um.USER=? and um.role_id=rm.role_id" /> 
      <password-encoder hash="md5"/> 
     </authentication-provider> 
    </authentication-manager> 
</beans:beans> 

答えて

8

はあなたのフォームログインタグに常に利用-デフォルト・ターゲット属性を追加します。

<form-login always-use-default-target="true" /> 

trueに設定した場合、ユーザーは常にかかわらず、彼らは、ログインページに到着したかの、デフォルト・ターゲット-urlで指定された値で開始します。 UsernamePasswordAuthenticationFilterのalwaysUseDefaultTargetUrlプロパティにマッピングされます。デフォルト値はfalseです。 Grailsので

+0

おかげバートでの問題を解決します。予想通りの働き – UserAdi

2

は、この設定はConfig.groovy

grails.plugin.springsecurity.successHandler.alwaysUseDefault = true 
関連する問題