2015-04-21 57 views
2

由於Spring Security Core Plugin目前不適用於Grails 3,因此我試圖使用Spring啓動,如here所示。請給出一些提示如何在gsp中顯示當前用戶的名字。有什麼辦法可以在gsp文件中使用Spring Security的標籤。 謝謝Grails 3 gsp中的Spring安全標籤

+0

大問題 - 天堂」但仍然能夠讓GSP識別彈簧安全標籤庫。消息 請求處理失敗;嵌套的異常是org.grails.gsp.GroovyPagesException:處理GroovyPageView時出錯:未知的JSP標記sec:authorize – arcseldon

回答

3

A tag library有權訪問session並可用於顯示當前用戶名。

在GSP,提出:

<g:username /> 

然後創建一個標籤庫,如:

的grails-app /標籤庫/ SecurityTagLib.groovy

class SecurityTagLib { 

    def username = { 
     def token = session.SPRING_SECURITY_CONTEXT?.getAuthentication() 
     out << token?.getPrincipal()?.getUsername() 
     } 

} 
+0

您並不認真地建議人們構建自己的標記庫,因爲grails GSP頁面不支持標準spring security標記庫? Yuck – arcseldon

+0

是的。 1)標記庫是輕量級且易於創建的,2)替代品(例如定製插件)更多地涉及。話雖如此,如果插件默認內置了「用戶名」標籤,那肯定會很好。 –

+0

感謝您的回覆。那麼,明白標籤的創建是非常簡單的,所以從這個意義上說,是的,而不是定製一個插件,這是兩個弊端中最好的。但是我真的希望能夠支持Spring Security Tag lib或者等效的替代品 - 這聽起來像我需要構建的(對於我的用例)是一個GSP友好的彈簧安全標籤庫,並且這確實是作爲驚喜。有任何想法嗎? – arcseldon

0

我在我的應用程序中基於最新的Grails 2插件實施了簡化版SpringSecurityServiceSecurityTagLib。它是一個基於源代碼的插件,您可以簡單地複製所需的標籤。