Spring Security 3.1中的默认角色

Jér*_*nge 7 java default roles spring-security

Spring 3.1安全性contact示例在其中使用了几个角色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"/>
Run Code Online (Sandbox Code Playgroud)

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

Ümi*_*mit 14

IS_AUTHENTICATED_ANONYMOUSLY在定义AuthenticatedVoter使用类.
各种ROLE_xxxx没有特殊含义.

默认情况下,Spring Security会建议这些角色,因为它们在大多数应用程序中使用.
但是,您可以自由定义和使用自定义角色(即ROLE_SUPERMAN).
你只需要确保在UserDetail你返回UserDetailService了这种ROLE分配为GrantedAuthority(无论是从一个数据库或手动).

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

<bean class="org.springframework.security.vote.RoleVoter">
  <property name="rolePrefix" value="APP"/>
</bean>
Run Code Online (Sandbox Code Playgroud)