当前位置: 首页 > 知识库问答 >
问题:

HttpSecurity permitAll 和 WebSecurity 忽略 un-Auth URL 的函数?

卢权
2023-03-14

这个问题看起来可能重复,但以下答案都没有解释何时使用:

`http
   .authorizeRequests()
   .antMatchers("/h2-console/**", "/user/register/**").permitAll()` 

`web
   .ignoring()
   .antMatchers("/h2-console/**", "/user/register/**")`
  1. HttpSecurity、WebSecurity和AuthenticationManagerBuilder
  2. Spring Security中Web忽略和Http允许的区别

通过阅读StackOverflow asnwers和几篇文章,我了解到:

configure(HttpSecurity)允许在资源级别配置基于web的安全性。

configure(WebSecurity)用于影响全局安全性的配置设置。使用这个URL,Spring Security过滤器链会完全忽略它。

当我使用< code>permitAll()时,它仅在我禁用了csrf: http.csrf()时才有效。disable()因为Spring Security过滤器链仍然是活动的。

但使用<code>web。忽略()URL将被完全忽略。

仍然有很多文章使用http.permitAll()作为/login/register,就像这样和这样

所以我想了解,

为什么我们甚至应该使用http.permitAll()来表示Un-Auth URLS,如/login/register

为什么我们不能使用 web.ignoring() 作为 /login/register

为什么 web.ignoring() 通常用于提供静态内容,如 csswebjars 等,而不是 /login/register

共有1个答案

魏高邈
2023-03-14

正如< code>@M. Deinum指出的,我正在总结答案,并且我已经在PR中更新了相同的文档。

配置(web安全性web)

方法中使用的endpoint忽略Spring Security过滤器、标头、CSRF等。请参阅HeadersConfigrer、CsrfConfigrer。相反,如果您想保护公共endpoint免受常见漏洞的侵害,请参阅配置(HttpSecurity)HttpSecurity#AuthizeRequest配置方法。

< code >配置(HttpSecurity http)

可以在此处指定需要防御常见漏洞的公共终结点。有关更多详细信息,请参阅 HttpSecurity#authorizeRequestspermitAll() 授权规则。

 类似资料:
  • @EnableGlobalMethodSecurity(prePostEnabled=true)公共类SecurityConfig扩展了WebSecurityConfigurerAdapter{ 我错过了什么?请指教。

  • 我写了一个模板函数,它使用了另外两个模板函数(添加 在math_functions.cpp中,我对add有不同的专门化 我还编写了一个简单的测试程序: 这段代码编译时没有任何错误,但奇怪的是,当我调用mulvadd时,调用的函数是h文件中定义的默认模板,而不是cpp文件中的专用版本。发生这种情况的原因是什么?

  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc

  • 问题内容: 谁能解释何时覆盖以及? 问题答案: configure(AuthenticationManagerBuilder)用于通过允许轻松添加AuthenticationProviders来建立身份验证机制:例如,以下内容定义了具有内置“用户”和“管理员”登录名的内存中身份验证。 configure(HttpSecurity)允许基于选择匹配在资源级别配置基于Web的安全性-例如,以下示例将以

  • 有人能解释什么时候覆盖、和吗?

  • 我在服务中使用MongoRepository。在我的例子中,我有三个字段,它们的名字是“姓名”、“年龄”和“性别”。我可以在我的界面中使用以下方法来查询数据: 现在我想用这3个字段的每一个组合来查询数据,所以我需要在这里写7 (3 3 1)方法,它真的很难看。 我试着写些 如果输入只有两个字段:name=Chris,age=18,那么我可以调用 来获取Chris和18岁的人的名单。我怎样才能实现这