tutorial quickstart example auth grails spring-security authorization role

grails - quickstart - ¿Cómo obtener el rol de usuario actual con el complemento de seguridad de Spring?



spring security service (6)

Estoy usando el complemento spring-security-core en mi aplicación de grails. Necesito saber el rol del usuario actual en una acción de controlador. ¿Cómo puedo recuperar eso?


Desde un controlador puede usar dos métodos que el complemento agrega a la metaclase, getPrincipal e isLoggedIn :

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

Si la acción es segura, puede omitir la loggedIn / isLoggedIn() .


Para conseguir el usuario

def springSecurityService def principal = springSecurityService.principal String username = principal.username


SecurityContextHolder sabe que:

SecurityContextHolder.getContext().getAuthentication().getAuthorities()


Si simplemente necesita verificar si un usuario está en un rol específico, use SpringSecurityUtils.ifAllGranted que toma una única cadena como un argumento que contiene una lista de roles delimitada por comas. Devolverá verdadero si el usuario actual pertenece a todos ellos. SpringSecurityUtils también tiene métodos como ifAnyGranted , ifNotGranted , etc., por lo que debería funcionar para lo que sea que esté intentando lograr.


También puede usar getAuthenticatedUser() por sí mismo. Este método se inyecta automáticamente en cada controlador y, por lo tanto, solo está disponible desde los controladores. Tendrá que usar uno de los otros métodos si desea acceder al usuario actual registrado desde cualquier otro lugar.


Puede inyectar springSecurityService en su controlador:

def springSecurityService

y luego en tu acción, llama:

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

Vea los documentos here .