如何在 gsp 视图中使用 springSecurity 访问当前登录的用户用户名,或者更具体地说,在文本字段中使用此值?
下面的这个解决方案不起作用:
value="${sec.loggedInUserInfo(field:'username')}"
如何在 gsp 视图中使用 springSecurity 访问当前登录的用户用户名,或者更具体地说,在文本字段中使用此值?
下面的这个解决方案不起作用:
value="${sec.loggedInUserInfo(field:'username')}"
以下几行都在我的测试中正常工作。
<input name="username" type="text" value="${sec.username()}" />
<input name="username" type="text" value="${sec.loggedInUserInfo(field: 'username')}" />
您遇到的错误可能来自其他地方。您能否仅在 GSP 中使用该输入标签进行测试?
自定义 Taglib 选项以获取有关登录用户的各种信息到视图中。
ExampleNameTagLib.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
}
}
}
}
示例ViewPage.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)}"/>