【问题标题】:What is the difference between ROLE_USER and ROLE_ANONYMOUS in a Spring intercept url configuration?Spring拦截url配置中的ROLE_USER和ROLE_ANONYMOUS有什么区别?
【发布时间】:2011-03-27 00:51:50
【问题描述】:

如下例所示的 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>

【问题讨论】:

    标签: java authentication spring-security security-roles


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2018-01-31
      • 2017-06-15
      • 2021-07-17
      • 2019-07-18
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多