Я использую аннотацию в java для предоставления разрешения на конкретный метод. Пока у меня не было способа сделать мой метод доступным для нескольких ролей, одна роль отлично работает с @Secured ( "ROLE_CUSTOMER" ). Есть ли способ сделать hasRole ('role1', 'role2')?
Как я могу аннотировать метод с помощью Spring Security, чтобы вызывающий вызывал один из списков ролей?
Ответ 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'])