在春天安全的财产空

时间:2014-01-22 06:43:53

标签: spring grails

我的控制器def user = springSecurityService.principal中有此代码。问题是,当像下面这样使用它时,其他控制器无法找到用户,它返回null

class adminController{
    def springSecurityService

    def adminController(){
      def user = springSecurityService.principal
      [user:user] <-----this
    }

}

如何使user可用于其他操作?如果它在每个单独的动作下都是这样的:

class adminController{
   def springSecurityService

   def methodA(){
      def user = springSecurityService.principal
      [user:user] 
      }

  def methodB(){
      def user = springSecurityService.principal
      [user:user] 
      }
   }
  ..... and so on
}

然而,这是重复和糟糕的。我使用此def user = springSecurityService.principal获取属性并将其显示在gsp模板上的标题中。

1 个答案:

答案 0 :(得分:1)

要在gsp模板中显示用户属性,可以创建自定义taglib:下面是如何使用taglib显示用户全名的示例。

class SimpleTagLib {
    def springSecurityService
    static namespace = "ns"

    def userFullName = {
        User currentUser = springSecurityService.currentUser as User
        if (currentUser) {
            out << currentUser.firstName + " " + currentUser.lastName
        }
    }      
}

在您的gsp模板中,您只需要像这样添加标签

.......
<ns:userFullName/>
......

P.S。您可以创建其他标记库以反映用户电子邮件,用户名等。