Spring 3.1 Security 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"/>
这些 IS_AUTHENTICATED_ANONYMOUSLY、ROLE_SUPERVISOR、ROLE_USER 角色在哪里定义?这些默认角色是由 Spring Security 创建的吗?
最佳答案
IS_AUTHENTICATED_ANONYMOUSLY 在 AuthenticatedVoter 中定义类。
各种ROLE_xxxx 没有特殊含义。
Spring Security 默认建议这些角色,因为它们在大多数应用程序中使用。
但是,您可以自由定义和使用自定义角色(即 ROLE_SUPERMAN)。
您只需确保 UserDetailService
返回的 UserDetail
将此 ROLE
指定为 GrantedAuthority
(来自数据库或手动)。
其实ROLE就是前缀。如果您想将其更改为 APP(即 APP_ADMIN),您必须定义自定义 AppVoter
:
<bean class="org.springframework.security.vote.RoleVoter">
<property name="rolePrefix" value="APP"/>
</bean>
关于java - Spring Security 3.1 中的默认角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577506/