java - Spring Security 3.1 中的默认角色

标签 java spring-security default roles

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_ANONYMOUSLYAuthenticatedVoter 中定义类。
各种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/

相关文章:

java - 为什么下面的代码没有绘制一条最靠近左上角的线?

java - 有什么方法可以下载 Mediafire 链接吗?

java - 使用 AuthenticationFailureHandler 在 Spring Security 中自定义身份验证失败响应

java - Spring OAuth2 隐式流重定向 url

Ruby:没有 block 的选择/查找有什么用吗?

java - MongoDB 和 Morphia - 传统 id(长)而不是 ObjectId

java - 为什么这条线交点代码不起作用?

spring - 如何使用Spring Security Core和Grails处理登录

jQuery 设置默认全局缓动和队列

c++ - 在构造函数中默认类的结构字段