如何使用Spring Security注释方法,以便调用者需要拥有一个角色列表?

时间:2011-09-05 12:29:44

标签: spring spring-security

我在java中使用注释来授予特定方法的权限。到目前为止,我没有办法让我的方法可以访问多个角色,单个角色可以正常使用@Secured(“ROLE_CUSTOMER”)。有没有办法做hasRole('role1','role2')?

4 个答案:

答案 0 :(得分:34)

我也找到了问题的确切解决方案。

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

工作正常!
像java代码中的魅力一样工作。

答案 1 :(得分:10)

只需:

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

答案 2 :(得分:7)

为了实现这一点,我经常使用这个

将其导入JSP

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

并且知道你可以使用它来处理安全性,就像在taglib

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

还有另一个这样的人不允许那些......我认为这是HasNoRole

无论如何这都有效!

答案 3 :(得分:-1)

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'])