2014-10-01 20 views
2

我在我的grails應用程序中使用Spring Security Core Plug In。我想問一件事:使用Spring Security核心插件訪問Grails應用程序外的用戶信息

  1. 我們如何訪問grails應用程序外部登錄的用戶信息(用戶名,ID等)。我想在src/groovy目錄下訪問它。有沒有辦法呢?

謝謝,

如果你想從Grails的神器不能訪問 UserDetails實例
+0

參見[我的回答]抓住它(http://stackoverflow.com/questions/26004897/springsecurityservice-log-other-user-out/26009441#26009441)例如使用''''HttpSessionListener'''獲取''''SPRING_SECURITY_CONTEXT'''的例子。它可能會幫助你開始。我不太理解你的第二個問題。你可以使用某種類型的根路徑,例如''http://www.example.com/downloads /'''? – Ken 2014-10-01 09:04:37

+0

感謝您的第一個答案。我研究這一點。其次路徑很簡單,例如用戶可以設置E:/下載等等。所以文件將被下載到這個目錄中。後來當我試圖從這條路徑訪問文件時,我被禁止了。 Actuallt,我想爲選項[permitAll]設置此路徑,以便我可以訪問此目錄中的文件。 P.S.我無法在配置靜態映射中指定此URL,因爲它可能在朗姆酒時間更改 – 2014-10-01 09:34:38

+0

並關於您的第一個答案。你正在使用HTTPSession獲取springSecurityContext,而在我的情況下,我沒有這個。我有簡單的方法讓我們說abc(){//這裏我想獲取登錄的用戶的名字}並且在那個方法中我想訪問那個 – 2014-10-01 09:39:29

回答

2

,你有3種選擇:

1)你可以通過springSecurityService作爲方法的參數或grailsApplication得到它或作爲春豆的applicationContext。只要您有服務,您可以撥打springSecurityService.currentUser以獲取用戶詳細信息

2)您可以通過獲取httpSession作爲會話屬性。

3)你可以從ThreadLocal變量通過SecurityContextHolder.context.authentication

+0

1.對於第一個選項:我從grails應用程序的'resource'目錄調用此方法,因此不確定我們是否可以在資源目錄中注入'springSecurityService'對象。 – 2014-10-01 14:26:51

+0

2.對於第二個答案:您可以告訴他們我該如何獲得HTTPSession?我知道一旦我得到這個我xan gett的SpringSecurityContext(HTTPSession) 3.我也嘗試過你的第三個選項,通過這種方式我得到'匿名用戶' – 2014-10-01 14:28:13

+0

你可以得到'session'(HttpSession的實例)只在控制器或標籤庫,這是很自然的 – injecteer 2014-10-01 14:30:03

相關問題