8

在 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>
4

2 回答 2

15

ROLE_ANONYMOUS 是配置使用 Spring Security 的“匿名身份验证”过滤器时分配给未经身份验证(匿名)用户的默认角色。这是默认启用的。但是,如果您改用表达式isAnonymous()可能会更清楚,这具有相同的含义。

ROLE_USER 没有任何意义,除非您在用户通过身份验证时将此角色分配给用户(您负责为经过身份验证的用户加载角色(权限))。它不是 Spring Security 基础架构中内置的名称。在给定的示例中,大概该角色已分配给经过身份验证的用户。

于 2010-08-08T23:52:50.080 回答
1

ROLE_ANONYMOUS 没有用户凭据,ROLE_USER 有用户凭据...已通过身份验证。

这是我根据提供的配置的解释

于 2010-08-08T20:00:13.993 回答