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

Spring Boot Security通过WebSecurity不忽略certian url

颜杰
2023-03-14
    protected void configure(HttpSecurity http) throws Exception {

    RequestMatcher csrfRequestMatcher = new RequestMatcher() {
          private AntPathRequestMatcher[] requestMatchers = {
              new AntPathRequestMatcher("/iams/w/*")
          };
          @Override
          public boolean matches(HttpServletRequest request) {
            for (AntPathRequestMatcher rm : requestMatchers) {
              if (rm.matches(request)) { return true; }
            }
            return false;
          } // method matches

        };      


    http
        .csrf()
        .requireCsrfProtectionMatcher(csrfRequestMatcher)
        .and()
        .authorizeRequests()
            .anyRequest().authenticated()
            .and()
        .requestCache()
            .requestCache(new NullRequestCache())
            .and()
        .httpBasic();
}
    public void configure(WebSecurity web) throws Exception {

    web.ignoring().antMatchers(
            "/myapp/docs/**",
            "/myapp/docs/*",
            "/myapp/docs/index.html",
            "/resources/**", 
            "/static/**");

}
@EnableWebSecurity

@EnableGlobalMethodSecurity(prePostEnabled=true)公共类SecurityConfig扩展了WebSecurityConfigurerAdapter{

我错过了什么?请指教。

共有1个答案

游皓
2023-03-14

您的代码中有一个错误顺序。

http
    .csrf()
    .requireCsrfProtectionMatcher(csrfRequestMatcher)
    .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .requestCache()
        .requestCache(new NullRequestCache())
        .and()
    .httpBasic();

因此,需要对任何请求进行身份验证。您可以直接使用antmatchers

http
        .authorizeRequests()
        .antMatchers("/iams/w/*")
        .authenticated()
        .and()
        .httpBasic()
        .and()
        .requestCache()
        .requestCache(new NullRequestCache())
        .csrf().disable()

希望对你有帮助。

 类似资料:
  • 这个问题看起来可能重复,但以下答案都没有解释何时使用: 和 HttpSecurity、WebSecurity和AuthenticationManagerBuilder Spring Security中Web忽略和Http允许的区别 通过阅读StackOverflow asnwers和几篇文章,我了解到: configure(HttpSecurity)允许在资源级别配置基于web的安全性。 conf

  • 我正在尝试比较自定义对象的列表。我设置了LEVENSHTEIN_DISTANCE并创建了自定义比较器。对象之间唯一的区别是列表中值的顺序。我希望“没有变化”,但我得到了listchange。结果和示例如下。我做错了什么? 非常感谢和问候,安德烈

  • 我在Spring 4 MVC Security Boot项目中设置了一个自定义身份验证过滤器。过滤器工作正常,现在我想禁用某些URI的安全性(如)。这是我的配置: 不幸的是,当我在下调用资源时,过滤器仍然是链接的。我在过滤器中添加了,并且每次调用都会将其写入控制台。你知道我的配置有什么问题吗? 更新 过滤代码:

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

  • 这是我的东西 当我得到响应时,我看到 我的看起来像 问题 如何消除中的值?

  • 问题内容: 我在Spring 4 MVC + Security + Boot项目中设置了一个自定义身份验证过滤器。过滤器可以很好地完成工作,现在我想禁用某些URI(例如)的安全性。这是我的配置 不幸的是,当我在/ api / …下调用resource时,过滤器仍然被链接。我在过滤器中添加了println,并在每次调用时将其写入控制台。你知道我的配置有什么问题吗? 更新 过滤器代码: 问题答案: 删