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>
有帮助吗?

解决方案

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

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

其他提示

ROLE_ANONYMOUS没有用户凭证,ROLE_USER已用户凭证...已被认证。

这是基于所提供的配置我的解释

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top