2015-04-21 29 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。它是一个基于源代码的插件,您可以简单地复制所需的标签。