Подтвердить что ты не робот

Grails и Spring Безопасность. Как получить аутентифицированного пользователя из контроллера?

Недавно я перешел из плагина JSecurity в Spring Security. Как получить аутентифицированного пользователя из моих контроллеров?

4b9b3361

Ответ 1

Я использую 0.5.1, и для меня работает следующее:

class EventController {
  def authenticateService

  def list = { 
     def user = authenticateService.principal() 
     def username = user?.getUsername()
     .....
     .....
  } 
}

Ответ 2

В настоящее время он не документирован, но в файле установки плагина есть три метода, которые он добавляет к каждому контроллеру, так что вам фактически не нужно вводить аутентификацию. Сервис:

private void addControllerMethods(MetaClass mc) {
    mc.getAuthUserDomain = {
        def principal = SCH.context?.authentication?.principal
        if (principal != null && principal != 'anonymousUser') {
            return principal?.domainClass
        }

        return null
    }

    mc.getPrincipalInfo = {
        return SCH.context?.authentication?.principal
    }

    mc.isUserLogon = {
        def principal = SCH.context?.authentication?.principal
        return principal != null && principal != 'anonymousUser'
    }
}

Это означает, что вы можете просто вызвать

principalInfo

Получить основной объект. Он также имеет "isUserLogin", чтобы узнать, зарегистрирован ли пользователь и "authUserDomain", чтобы получить фактический экземпляр класса домена (Person/User), связанный с главным пользователем зарегистрированного пользователя.

Ответ 3

Следующий код из Spring плагина безопасности Core (версия: 1.1.2) - справочная документация - раздел 6.2

grails.plugins.springsecurity.SpringSecurityService предоставляет функции утилиты безопасности. Это регулярная служба Grails, поэтому вы используете инъекцию зависимостей, чтобы ввести ее в контроллер, службу, taglib и т.д.:

class SomeController {
    def springSecurityService
    def someAction = { 
        def user = springSecurityService.currentUser 
        …
    } 
}

Ответ 4

В настоящее время я думаю, что способ сделать это:

def user = getAuthenticatedUser()

Ответ 5

Вы можете получить текущего Пользователя таким образом также

 class AnyController {
  def springSecurityService
  def someAction = { 
    def user = User.get(springSecurityService.principal.id)

     } 
 }

Ответ 6

Используйте этот код:

if (springSecurityService.isLoggedIn()){   
        println "Logged In"

    }