Как получить роль текущего пользователя с помощью плагина безопасности Spring? - PullRequest
20 голосов
/ 24 июня 2011

Я использую плагин spring-security-core в своем приложении grails.Мне нужно знать роль текущего пользователя в действии контроллера.Как я могу получить это?

Ответы [ 6 ]

31 голосов
/ 24 июня 2011

Вы можете ввести springSecurityService в свой контроллер:

def springSecurityService

и затем в вашем действии позвоните:

def roles = springSecurityService.getPrincipal().getAuthorities()

См. Документы здесь .

20 голосов
/ 24 июня 2011

Из контроллера вы можете использовать два метода, которые плагин добавляет к метаклассу, getPrincipal и isLoggedIn:

def myAction = {
   if (loggedIn) {
      // will be a List of String
      def roleNames = principal.authorities*.authority
   }
}

Если действие гарантировано, вы можете пропустить проверку loggedIn / isLoggedIn().

3 голосов
/ 06 февраля 2014

Если вам просто нужно проверить, находится ли пользователь в определенной роли, тогда используйте SpringSecurityUtils.ifAllGranted, который принимает одну строку в качестве аргумента, который содержит список ролей, разделенных запятыми. Он вернет true, если текущий пользователь принадлежит всем им. SpringSecurityUtils также имеет методы типа ifAnyGranted, ifNotGranted и т. Д., Поэтому он должен работать для всего, что вы пытаетесь достичь.

0 голосов
/ 16 августа 2016

SecurityContextHolder знает, что:

SecurityContextHolder.getContext().getAuthentication().getAuthorities()
0 голосов
/ 02 ноября 2015

Получить пользователя

    def springSecurityService
    def principal = springSecurityService.principal
    String username = principal.username
0 голосов
/ 10 июня 2014

Вы также можете использовать getAuthenticatedUser() отдельно. Этот метод автоматически вводится в каждый контроллер и, таким образом, доступен только от контроллеров. Вам придется использовать один из других методов, если вы хотите получить доступ к текущему зарегистрированному пользователю из любого другого места.

...