2010-08-08 121 views
7

ROLE_USER和ROLE_ANONYMOUS在Spring拦截url配置(如下例)中有什么区别?在Spring拦截url配置中,ROLE_USER和ROLE_ANONYMOUS有什么区别?

<http auto-config="false" access-decision-manager-ref="accessDecisionManager" 
    use-expressions="true"> 
    <intercept-url pattern="/admin/**" access="hasRole('ROLE_ANONYMOUS')" 
     requires-channel="http" /> 
    <intercept-url pattern="/login/**" access="hasRole('ROLE_ANONYMOUS')" 
     requires-channel="${application.secureChannel}" /> 
    <intercept-url pattern="/error/**" access="hasRole('ROLE_ANONYMOUS')" 
     requires-channel="http" /> 
    <intercept-url pattern="/register/**" access="hasRole('ROLE_ANONYMOUS')" 
     requires-channel="${application.secureChannel}" /> 
    <intercept-url pattern="/" access="hasRole('ROLE_ANONYMOUS')" 
     requires-channel="http" /> 
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" 
     requires-channel="http" /> 
    <form-login login-page="/login" login-processing-url="/login/submit" 
     authentication-failure-url="/login/error" /> 
    <logout logout-url="/logout" /> 
</http> 

回答

13

ROLE_ANONYMOUS配置我的解释是分配给一个未认证用户(匿名)用户的默认角色时,配置使用Spring Security的"anonymous authentication" filter。这是默认启用的。但是,如果使用表达式isAnonymous(),则它可能会更清晰一些,它们的含义相同。

ROLE_USER没有意义,除非您的用户在通过身份验证(您负责为已验证的用户加载角色(权限))时将此角色分配给您的用户。这不是Spring Security基础架构的名称。在给定的例子中,假设该角色被分配给经过认证的用户。

1

ROLE_ANONYMOUS没有用户凭证,ROLE_USER有用户凭证...已经过验证。

这是基于提供