2014-01-21 3 views
0

Это пример кода метода getCurrentUser() в службе Spring Security.Безопасность Grails & spring, получающая идентификатор текущего зарегистрированного пользователя

class SomeController { 
    def springSecurityService 

    def someAction() { 
    def user = springSecurityService.currentUser 
    } 
} 

Как получить идентификатор зарегистрированного пользователя и использовать его в этом <g:link action="show" controller="User" id="">Show Profile</g:link>

ответ

2

В целом это доступно в «основной», который экземпляр GrailsUser, поэтому наиболее эффективным способом является springSecurityService.principal.id

1

В контроллере:

springSecurityService.currentUser.id 
+0

это не работает ' Показать профиль' и у меня уже есть этот 'def springSecurityService' в моем контроллере – Jan

+0

@MuduM Этот код должен быть в контроллере, а не в GSP. Разумеется, услуги не вводятся в GSP. В контроллере вы должны добавить результирующий идентификатор к модели, а затем вы можете использовать его в GSP – lukelazarovic

+1

Это очень неэффективный способ сделать это. Метод getCurrentUser() 'поступает в базу данных, используя информацию в памяти, хранящуюся в' Authentication', и выполнив это, вы получите идентификатор экземпляра. Но он уже был в памяти, не теряя при этом обращения к базе данных. См. Мой ответ. –

Смежные вопросы