2011-11-07 86 views
0

全部,彈簧安全 - 奇怪的錯誤

我想添加春天安全(3.0.7)到我的web應用程序(春天3.0.6,瓷磚2.2)。默認< form-login/>按預期工作,但我無法創建一個自定義的。遇到了一些問題:

  1. 用戶點擊登錄鏈接上時,都會登錄頁面被調用兩次
  2. 這個UserDetailsS​​ervice拋出一個異常,如果用戶不存在,但例外從來沒有得到任何地方撿到並使用。這導致<表單登錄/ >重新路由到登錄頁面,而不是身份驗證失敗的網址
  3. 我不會看到錯誤消息時使用錯誤的用戶名登錄(這可能是由於上述問題)
  4. 成功登錄後,有時會打開正確的頁面,有時會隨機打開正在頁面內引用的JavaScript文件。

我已經遵循了所有的教程,並不能提出任何工作。有沒有人碰巧知道負責創建默認登錄的類?也許我可以查看源代碼並模仿他們擁有的。

有沒有人經歷過這樣的奇怪行爲?

回答

0

我想出了2個我的問題。我發佈它們以防其他人發生同樣的事情。

對於#1 /#4:該網站正在使用磁貼,並且整個網站都使用了默認的html標頭塊。

<html> 
<head> 
    <script src="foo.js" type="text/javascript"> 
</head> 

配置explicilty阻止該JavaScript文件誰沒有登錄的用戶。

<intercept-url pattern="foo.js" access="isAuthenticated()"/> 

因此,當一個用戶來到主頁,該網站將除foo.js.加載由於foo.js中的方法在登錄之前從未被調用,所以一切似乎都正常。

然而,當有人試圖登錄時,Spring Security將foo.js視爲第一個要顯示的受保護頁面,並自動將其打開。

這也導致登錄頁面被調用兩次。一次用於實際的登錄鏈接,一次用於foo.js文件。

+0

我還計算出問題2和3.我忘記將我的登錄失敗頁面添加到'允許'列表,因此它總是重新路由到常規登錄頁面。 user973479