1

如何在 gsp 视图中使用 springSecurity 访问当前登录的用户用户名,或者更具体地说,在文本字段中使用此值?

下面的这个解决方案不起作用:

value="${sec.loggedInUserInfo(field:'username')}"

4

2 回答 2

6

以下几行都在我的测试中正常工作。

<input name="username" type="text" value="${sec.username()}" />
<input name="username" type="text" value="${sec.loggedInUserInfo(field: 'username')}" />

您遇到的错误可能来自其他地方。您能否仅在 GSP 中使用该输入标签进行测试?

于 2013-06-02T01:03:11.573 回答
0

自定义 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)}"/>
于 2017-01-27T20:23:11.983 回答