Как сделать попытку sec: loggedInUserInfo в переменную в gsp - PullRequest
5 голосов
/ 26 мая 2011

Я хочу получить значение sec: loggedInUserInfo и попытаться ввести переменную с именем user.

Мой код выглядит следующим образом:

<sec:loggedInUserInfo field="username" /> 

<%
  def user = *value of field loggedInUserInfo *
%>

Возможно ли это сделать?

Ответы [ 5 ]

10 голосов
/ 26 мая 2011

Это проще и отлично работает для меня:

<g:set var="user" value="${sec.username()}" />
3 голосов
/ 20 января 2012

Чтобы назначить любое поле экземпляра UserDetails, на которое ссылается к переменной, которую вы можете использовать:

<g:set var="fullName" value="${sec.loggedInUserInfo(field:'fullName')}" />

(см. Также Пользовательские данные пользователя )

2 голосов
/ 26 мая 2011

Если вы хотите, чтобы пользовательский объект был в gsp, просто передайте его обратно как часть карты модели из контроллера. в действии контроллера выполните

def user = springSecurityService.getCurrentUser()
render view: 'yourgsp', model: [user: user]
1 голос
/ 26 мая 2011

Я не уверен, что мы можем использовать этот тег напрямую, я не смог найти его раньше, поэтому я сделал свой собственный тег для этой цели

<m:userName id="${session.SPRING_SECURITY_CONTEXT?.authentication?.principal?.id}"/>

def userName = { attrs ->
Long id = attrs['id'] ? attrs['id'].toLong() : null
User user = User?.get(id);
out << user?.firstName

}

0 голосов
/ 17 ноября 2012

Я создал один taglib как loggedinUser, который добавляется на страницу gsp как:

Welcome <g:loggedInUser/> ! 

Который показывает имя пользователя, вошедшего в систему, в верхней части каждого gsp в моем проекте. В библиотеке пользовательских тегов мой код выглядит следующим образом:

def springSecurityService

def loggedInUser={
    if(springSecurityService.getPrincipal().equals("anonymousUser")){
        response.sendRedirect("${request.contextPath}/login/auth")
    }else{
        out <<"${springSecurityService.currentUser.username}"
        out << """ [${link(controller:"logout"){"Logout"}}]"""
    }
}

Таким образом, на каждой странице отображается следующее: Добро пожаловать, ИМЯ ПОЛЬЗОВАТЕЛЯ [Выйти]!

...