Spring security antMatcher 未按预期工作

Posted

技术标签:

【中文标题】Spring security antMatcher 未按预期工作【英文标题】:Spring security antMatcher not working as expected 【发布时间】:2020-01-18 06:10:30 【问题描述】:

我有我的自定义控制器 "/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 试图将我重定向到登录页面。

我不想要这个,我想允许任何用户连接到“/my-endpoint”端点。

我忘了配置什么?

有趣的是,内置端点 "/health" 按预期工作,即使会话已过期。

【问题讨论】:

my-endpoint 是什么? @chaoluo,我的自定义控制器,它只是返回静态 json 对象 添加您要调用的确切 URL。 @DarrenForsythe, localhost:3030/my-endpoint 【参考方案1】:

您可以使用configure(WebSecurity web)。它将绕过 Spring Security Filters 并允许任何用户访问端点。见HttpSecurity vs WebSecurity

@Override
    public void configure(WebSecurity web) throws Exception 
        web
          .ignoring()
            .antMatchers(HttpMethod.yourMethod, "/health")
            .antMatchers(HttpMethod.yourMethod, "/my-endpoint");
    

【讨论】:

以上是关于Spring security antMatcher 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 在运行时动态添加/删除 antMatchers 和角色

Spring security antMatcher 未按预期工作

Spring Security:antMatcher 的序列未按预期工作 [重复]

Spring Security:所有端点返回状态 200 并且对约束没有响应作为 antMatchers

Spring security antMatchers permitAll 不起作用

使用 AngularJS 和 Spring Security 的单页应用程序中需要 AntMatchers