2013-05-28 150 views
0

在使用彈簧安全我提供一個特定的頁面ROLE_ANONYMOUS用戶提供時,如何重定向到特定頁面。登錄憑據

<intercept-url pattern="/runApp*" 
     access="hasAnyRole('User', 'Admin','ROLE_ANONYMOUS')" /> 

在spring security的同一個http標籤中還有很多其他攔截url。這是我的春季安全代碼:

<http auto-config="true" use-expressions="true"> 
<intercept-url pattern='/welcome*' access="hasAnyRole('User', 'Admin')" /> 
<intercept-url pattern="/runApp*" access="hasAnyRole('User', 'Admin','ROLE_ANONYMOUS')" /> 
<form-login login-page="/login" authentication-failure-url="/login.jsp?login_error=true" default-target-url="/welcome" /> 
<logout logout-success-url="/login" invalidate-session="true" /> 

當用戶第一次登錄時,它會重定向到歡迎頁面。但是當他想訪問runApp頁面時,他必須在登錄頁面提供他的憑據。但是當他提供登錄憑證時,它會重定向到歡迎頁面。而我希望它重定向到特定的runApp頁面。

謝謝。

回答

0

我來到了一個解決方法。不是最好的解決方案,但是,如果有人有更好的展示,我全部耳朵。當重定向到登錄頁面時,我將數據保存在會話中。當註冊用戶登錄時,它會轉到控制器,從會話中獲取數據並將其重定向到所需的頁面。 感謝您的支持... :)

0

有在名爲always-use-default-targetform-login元件,其限定在登錄後重定向規則的另一屬性。如果此屬性的值設置爲false,則僅在直接請求登錄頁面之後,用戶纔會被重定向到default-target-url

+0

沒有運氣仍然是相同的再次重定向它歡迎頁面。 –

+0

http:// localhost:8080/myproject/runApp?data = 12這是匿名用戶可以訪問的鏈接。當他在瀏覽器中粘貼時,他被重定向到登錄頁面以獲取他的憑據,以下是控制器中的代碼。身份驗證auth = SecurityContextHolder.getContext() \t \t \t \t \t .getAuthentication(); \t \t \t如果((AUTH的instanceof AnonymousAuthenticationToken)){ \t \t \t \t返回 「登錄」; \t \t \t}所以當他用正確的憑據登錄,他將被重定向到特定頁面。 –

+0

如果此鏈接必須是不安全的,請將其置於另一個具有禁用安全性的「http」元素中。