我的控制器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模板上的标题中。
答案 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。您可以创建其他标记库以反映用户电子邮件,用户名等。