如何在gsp视图中使用springSecurity访问当前登录的用户username,或者更具体地说,在文本字段中使用此值?
下面的解决方案不起作用:
value = " $ {sec.loggedInUserInfo(字段:"用户名")}"
下面两行在我的测试中都能正常工作。
<input name="username" type="text" value="${sec.username()}" />
<input name="username" type="text" value="${sec.loggedInUserInfo(field: 'username')}" />
你得到的错误可能来自其他地方。您是否可以在GSP中仅使用该输入标签进行测试?
自定义标签库选项获取有关登录用户的各种信息。
ExamplNameTagLib.groovy
class ExamplNameTagLib {
static namespace = 'foo'
def springSecurityService
def currentUserProps = { attrs ->
def user = springSecurityService.getCurrentUser()
if (user) {
if (attrs.username) {
out << user.username
} else if (attrs.firstName) {
out << user.firstName
} else if (attrs.lastName) {
out << user.lastName
} else if (attrs.email) {
out << user.email
}
}
}
}
exampleViewPage.gsp
//Return username from taglib of the logged in user
<g:field type="text"
name="username"
value="${foo.currentUserProps(username: true)}" />
//Return email from taglib of the logged in user
<g:field type="email"
name="email"
value="${foo.currentUserProps(email: true)}"/>