如何基于URL为JWT过滤器创建例外

时间:2017-12-06 10:44:30

标签: java http jwt jjwt

我正在进行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);}

在上面的代码中,我希望系统不要过滤bypassURL。 如果我正在传递" / sayHello",那么JWTAuthenticationFilter不应该应用于此而不是" / sayHello"必须通过JWTAuthenticationFilter。

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

1 个答案:

答案 0 :(得分:2)

使用permitAll时,它表示每个经过身份验证的用户,但是您禁用了匿名访问,因此无效。

您想要忽略某些网址,以覆盖采用configure对象和WebSecurity模式的ignore方法。

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

HttpSecurity部分删除该行。这将告诉Spring Security忽略此URL,并且不对它们应用任何过滤器。