7

Spring 3.1 Securitycontact示例在其中使用了几个角色applicationContext-security.xml

<intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/index.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/hello.htm" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/switchuser.jsp" access="ROLE_SUPERVISOR"/>
<intercept-url pattern="/j_spring_security_switch_user" access="ROLE_SUPERVISOR"/>
<intercept-url pattern="/**" access="ROLE_USER"/>

这些 IS_AUTHENTICATED_ANONYMOUSLY、ROLE_SUPERVISOR、ROLE_USER 角色在哪里定义?这些默认角色是由 Spring Security 创建的吗?

4

2 回答 2

14

IS_AUTHENTICATED_ANONYMOUSLYAuthenticatedVoter类中定义。
各种ROLE_xxxx没有特殊含义。

Spring Security 默认建议使用这些角色,因为它们在大多数应用程序中使用。
但是,您可以自由定义和使用自定义角色(即 ROLE_SUPERMAN)。
您只需要确保UserDetail您返回的UserDetailServiceROLE分配为GrantedAuthority(从数据库或手动)。

实际上ROLE是前缀。如果要将其更改为APP(即 APP_ADMIN),则必须定义一个自定义AppVoter

<bean class="org.springframework.security.vote.RoleVoter">
  <property name="rolePrefix" value="APP"/>
</bean>
于 2012-07-20T11:30:46.483 回答
2

角色ROLE_SUPERVISOR, ROLE_USER由我们根据我们的应用程序定义。

如何创建自定义角色:如何在 Spring Security 中使用自定义角色/权限?

请参阅教程以使用创建自定义角色org.springframework.security.core.userdetails.UserDetailsService

于 2012-07-20T12:23:49.227 回答