Spring拦截url配置中ROLE_USER和ROLE_ANONYMOUS有什么区别?
-
26-09-2019 - |
题
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已用户凭证...已被认证。
这是基于所提供的配置我的解释
不隶属于 StackOverflow