了解Spring Security中permitAll()和anonymous()的区别

2024-01-04

我只是想确定我是否正确理解了这一点,因此我将感谢您的任何回复;在我的配置覆盖中:

@Override
protected void configure(HttpSecurity http) throws Exception
{
    http.
        [...]
        permitAll()
        [...]
}

the 允许全部()允许任何请求,同时:

anonymous()

只会向以下用户授予访问权限not登录but在这两种情况下Http会话-默认创建对象。

是对的吗?


从春天开始文档 https://docs.spring.io/spring-security/site/docs/current/reference/html/anonymous.html:

通常认为采用“默认拒绝”的良好安全实践,您可以明确指定允许的内容并禁止其他所有内容。定义未经身份验证的用户可以访问的内容是类似的情况,特别是对于 Web 应用程序。许多站点要求用户必须针对除少数 URL 之外的任何其他内容(例如主页和登录页面)进行身份验证。在这种情况下,最简单的方法是为这些特定 URL 定义访问配置属性,而不是为每个受保护的资源定义访问配置属性。换句话说,有时最好说 ROLE_SOMETHING 默认情况下是必需的,并且只允许此规则的某些例外,例如应用程序的登录、注销和主页。您还可以从过滤器链中完全忽略这些页面,从而绕过访问控制检查,但由于其他原因,这可能是不可取的,特别是如果这些页面对于经过身份验证的用户的行为不同。

这就是我们所说的匿名身份验证。

and

请注意,“匿名身份验证”的用户和未经身份验证的用户之间没有真正的概念差异。 Spring Security 的匿名身份验证为您提供了一种更方便的方式来配置访问控制属性。

使用.permitAll()将配置授权,以便允许该特定路径上的所有请求(来自匿名用户和登录用户)。

The .anonymous()表达式主要指用户的状态(登录或未登录)。 基本上,在用户“经过身份验证”之前,它是“匿名用户”。这就像每个人都有一个“默认角色”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解Spring Security中permitAll()和anonymous()的区别 的相关文章

随机推荐