2

我正在处理 JWT 身份验证。我想绕过(不允许通过 jwt 过滤器)提供的 URL。下面是代码片段。

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.cors().and().csrf().disable().authorizeRequests().antMatchers(bypassURLs)
                    .permitAll().anyRequest().authenticated().and().addFilter(new JWTAuthenticationFilter(authenticationManager(), jwtConfigProperties))
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);}

在上面的代码中,我希望系统不要过滤 bypassURLs。如果我传递“/sayHello”,则不应将 JWTAuthenticationFilter 应用于此,而“/sayHello”以外的 URL 必须通过 JWTAuthenticationFilter。

我已经尝试过http.csrf().ignoringAntMatchers("/sayHello");一些正则表达式,但没有成功。请帮忙。

4

1 回答 1

3

使用permitAll它时,它意味着每个经过身份验证的用户,但是您禁用了匿名访问,这样就不起作用了。

您想要的是忽略某些 URL,因为它会覆盖configure采用WebSecurity对象和ignore模式的方法。

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/api/v1/signup");
}

HttpSecurity并从零件中删除该线。这将告诉 Spring Security 忽略此 URL,并且不对它们应用任何过滤器。

于 2017-12-06T11:12:08.943 回答