java - Spring 拦截 url 配置中的 ROLE_USER 和 ROLE_ANONYMOUS 有什么区别?

标签 java authentication spring-security security-roles

在如下例的 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 的 "anonymous authentication" filter 时分配给未经身份验证(匿名)用户的默认角色。 .这是默认启用的。但是,如果您改用表达式 isAnonymous() 可能会更清楚,它具有相同的含义。

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

关于java - Spring 拦截 url 配置中的 ROLE_USER 和 ROLE_ANONYMOUS 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435824/

相关文章:

java - 使用 commons-net 的自动化 Telnet 客户端

api - Laravel 5.3 RESTFul API 无需身份验证

发布中的身份验证机制

java - Spring Security 按用户进行身份验证

java - 使用自定义登录页面登录后 Spring Security Thymeleaf 页面 403

java - 字符串反转性能

java - JTable模型按列排序后不刷新

java - 如何在java中生成20到100之间5个随机数的列表

javascript - 正确的登录页面模式

spring-security - spring security 3中的角色和权限