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

Spring安全对抗器未按预期工作

魏冷勋
2023-03-14

我有自定义控制器“/my-endpoint”和spring应用程序,其配置如下:

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/my-endpoint", "/health")
                .permitAll()
                .antMatchers(DENY_RESOURCE_PATTERNS)
                .denyAll()
                .anyRequest()
                .authenticated()

    }

似乎对于一个一致的用户来说,它工作得很好。但是如果我已经授权(使用oauth2),并且我的会话(或令牌)过期了->spring尝试将我重定向到登录页面。

有趣的是,内置endpoint“/health”按预期工作,即使会话过期。

共有1个答案

东方明亮
2023-03-14

您可以使用configure(WebSecurity web)。它将绕过Spring Security过滤器,并允许任何用户访问endpoint。参见HttpSecurity vs WebSecurity

@Override
    public void configure(WebSecurity web) throws Exception {
        web
          .ignoring()
            .antMatchers(HttpMethod.yourMethod, "/health")
            .antMatchers(HttpMethod.yourMethod, "/my-endpoint");
    }
 类似资料:
  • 基于文档,@EnableSideCar注释充当希望在Eureka中注册的非JVM应用程序的代理。相应地,要设置的配置为: 一旦“sidecar”启动并运行,我们应该能够通过service registry调用一个非JVMendpoint,只需使用“sidecar”应用程序在Eureka中注册的名称。例如,如果我们的“sidecar”应用程序在Eureka中注册为“php-sidecar”,以代理带

  • 我是Spring Security的新手。我们在我的一个示例示例中使用Spring Security 5.4.5和Spring Boot。 我在下面的配置类中尝试在RESTAPI的/user和/adminendpoint中应用Spring Security身份验证/授权。 根据上述Spring配置 /userUSER和ADMIN角色都可以访问, /adminADMIN角色也可以访问。 当我试图在浏

  • 我已经编写了如下所示的重新调度代码。尽管时间表上写着“每120秒重复一次”,但在结束UpdateQuartzJobTrigger方法后,Execute()方法会立即被调用。

  • 更新:我尝试将过滤器实现为OncePerRequestFilter,但仍然不起作用。有人能在这里进一步帮助我吗? 更新2:也试过这个,http://software.dzhuvinov.com/cors-filter-installation.html,运气不好 更新#3:这是我在控制台中的输出,我可以看到响应没有添加任何标题: register.html

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。