2012-03-12 15 views
11

Spring-security.xml benim uygulama-yayma etiketi aşağıdaki benim uygulamada yaylı güvenlik uyguladık.Bahar güvenliği başarılı authtication sonra varsayılan hedef-url isabet değil

<form-login login-page="/login.htm" default-target-url="/dashboard.htm" 
      authentication-failure-url="/login.htm?error=true" 
      authentication-success-handler-ref="authenticationSuccessHandler" /> 

ben /login.htm dan giriş yapmak istiyorum ve başarılı authetication sonra kullanıcı dashboard.htm vurmak istiyorum. Everythig başarılı bir şekilde authetication sonra /dashboard.htm çarptı ama bağlam vurur aslında dışında iyi çalışıyor .. ama manuel olarak url içinde dashboard.htm yazıyorsa, her şey iyi çalışıyor ... Evet authticationSuccessHandler uygulaması.

+0

aracılığıyla gidiş olmayacaktır. Başka filtreler kullanıyor musunuz? Urlrewrite olarak mı? – jddsantaella

+1

Spring Security'de uzman değilim, ancak neden hem varsayılan hedef URL hem de kimlik doğrulama başarılı işleyiciniz var? Varsayılan hedef-url'yi kaldırabilir ve başarı işleyicisindeki yönlendirme işlemini gerçekleştirebilirsiniz. – Blitzkr1eg

+3

Blitzkr1eg doğruysa, hem kimlik doğrulama-başarı-işleyicisi-ref hem de varsayılan hedef-url bulunmamalıdır. Kimlik doğrulama-başarı-işleyici-ref açıklamasından: "Başarılı bir kimlik doğrulama isteğini işlemek için kullanılması gereken bir AuthenticationSuccessHandler tabağına başvuru. ** Varsayılan hedef-url (veya her zaman-kullanım-varsayılan) ile birlikte kullanılmamalıdır. -target-url)uygulama olarak her zaman sonraki hedefe navigasyon ile ilgilenmelisiniz ** " – Dani

cevap

14

default-target-url niteliğini kaldırmayı ve şunları ekleyin:

<b:bean id="authenticationSuccessHandler" class="com.example.CustomSimpleURLAuthenticationSuccessHandler"> 
    <b:property name="defaultTargetUrl" value="/dashboard.htm"/> 
</b:bean> 
+0

Teşekkürler Vasileios ... bu benim için çalıştı ... – Ashish

+0

@vasilakis her zaman hedef url için yönlendirme her zaman varsayılan olacak mı değil mi? –

8
<beans:bean id="loginSuccessHandler" class="com.example.LoginSuccessHandler"> 
    <beans:property name="defaultTargetUrl" value="/security/success"/> 
    <beans:property name="alwaysUseDefaultTargetUrl" value="true"/> 
</beans:bean> 

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { 

    @Override 
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, 
            Authentication authentication) throws ServletException, IOException { 
     request.getSession().setMaxInactiveInterval(60 * 60); //one hour 
     System.out.println("Session set up for 60min"); 
     super.onAuthenticationSuccess(request, response, authentication); 
     } 
} 
+1

Teşekkürler! Bu benim için çalıştı :) –

+0

Harika bir cevap! – Omid

+0

Tamamen Java yapılandırması kullanan herkes için, constuctor public'de özellikleri ayarlayabilirsiniz LoginSuccessHandler() {super(); setAlwaysUseDefaultTargetUrl (true); setDefaultTargetUrl ("/ security/success"); } – ryanp102694

6

Söz spring is not redirecting to default target url? bu öneriyi kullanabilirsiniz. Bunu denedim ve çalışıyor. Resimde de görebileceğiniz gibi

<form-login login-page="/login.htm" 
default-target-url="/dashboard.htm" 
always-use-default-target="true"/> 
0

, (IMO Hep default-target-url yönlendir) kötü tasarım çeşit var. Eğer yasak kaynaktan giriş formuna gittiğinizde , o URL'ye yönlendirebilir ve bahar güvenliği için hata ayıklama leve etkinleştirmek ve bir tane ne olup bittiğini görmek için çalışılıyor the default-target-url

http://i.stack.imgur.com/fj9ou.png

İlgili konular