2012-04-22 87 views
1

在開發過程中,我發現自己經常不得不重新啓動我的應用程序,從而導致手動登錄的額外步驟。使用彈簧安全核心自動在grails中自動登錄

我認爲我可以在引導添加方法調用springSercurityService.reauthenticate(「爲myuser」),但是我沒有sucessfull

在控制器做同樣的事情在應用程序啓動後工作正常,所以它僅僅是在引導它不起作用。我調試了代碼而沒有看到任何明顯的錯誤。

+0

泰德納萊德的答案可能是你最好的選擇。身份驗證存儲在會話中,BootStrap中沒有會話或請求活動,因此強制進行身份驗證沒有任何意義。 – 2012-04-22 15:27:20

回答

2

我打了同樣的問題,我如何解決它是使用書籤(或自定義瀏覽器的「搜索引擎」),這使得它很容易重新登錄。啓用深層鏈接,它使很容易繼續在同一頁面上工作。重新啓動服務器後,只需刷新頁面,它就會將您重定向到登錄頁面。只需激活小書籤(或「搜索引擎」),它會將您登錄並重定向到您正在處理的頁面。

我有一個詳細的blog post顯示如何獲得此設置。

+0

感謝這個泰德 我最終創建了一個簡單的控制器,將調用springsecurityService.reauthenticate(),確保檢查環境是否是dev 必須這樣做因爲我有一個自定義身份驗證提供程序,需要登錄過程的硬件密鑰 但是,您的解決方案很好,一般在大多數情況下是首選 – Iman 2012-04-25 12:14:42

+0

嗨伊曼,請分享您的控制器代碼或詳細闡述它?我也想做同樣的事情,但被困住了。 – gtiwari333 2012-08-13 00:03:35

0

如果只是爲了避免登錄開發模式,您可以設置interceptUrlMap屬性。該屬性將允許您以不會要求您登錄的方式設置開發模式。

import grails.plugins.springsecurity.SecurityConfigType 

grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap 

environments { 
    development { 
     grails.plugins.springsecurity.interceptUrlMap = [ 
      '/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'] 
     ] 
    } 

} 
+0

我實際上需要執行登錄,以便我可以獲取用戶信息。否則我的應用程序將無法正常工作。所以一切都需要工作,如果我做了一個手動登錄 – Iman 2012-04-22 11:41:40

0

另一個選擇是添加一個servlet過濾器,如果環境是開發,它將登錄默認用戶。