Как я могу аннотировать метод с помощью Spring Security, чтобы вызывающий вызывал один из списков ролей?

Я использую аннотацию в java для предоставления разрешения на конкретный метод. Пока у меня не было способа сделать мой метод доступным для нескольких ролей, одна роль отлично работает с @Secured ( "ROLE_CUSTOMER" ). Есть ли способ сделать hasRole ('role1', 'role2')?

Ответ 1

я тоже нашел точное решение проблемы.

@PreAuthorize("hasAnyRole('ROLE_CUSTOMER','ROLE_OFFICEADMIN','ROLE_EMPLOYEE')") 

отлично работает!
Работает как шарм в java-коде.

Ответ 2

Просто:

@Secured({"ROLE1", "ROLE2", "ROLE3"})

Ответ 3

Чтобы это произошло, я часто использую этот

импортируйте это в свой JSP

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

и знаете, что вы можете использовать это для обработки безопасности, например, если taglib

<sec:authorize access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>

Есть и еще один такой, который не позволяет этим... я думаю, что это HasNoRole

В любом случае это работает!

Ответ 4

Аннотации grails "Secured" отличаются от аннотации spring "Secured". Grails берет массив строк. spring принимает странный язык выражения безопасности.

так:

import org.springframework.security.access.annotation.Secured;
@Secured('hasAnyRole([\'FOO-ROLE\'])')

или

import grails.plugins.springsecurity.Secured;
@Secured(['FOO-ROLE'])