除了“ / api / auth / login”和“ / api / auth / token / refresh”之外,我需要对所有从“ / api / auth”开始的请求进行身份验证。这是我的安全配置配置方法。问题是,它无法按预期工作。即使我为其分配了allowAll,它也会检查“ / api / auth / token / refresh”的身份验证。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/api/auth/login").antMatcher("/api/auth/token/refresh")
.antMatcher("/api/auth/**")
.antMatcher("/api/**");
http
.cors()
.and()
.csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(unauthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(AUTH_WHITELIST)
.permitAll()
.antMatchers("/api/auth/login","/api/auth/token/refresh").permitAll()
.antMatchers("/api/auth/**").authenticated()
.antMatchers("/api/**").permitAll()
.anyRequest()
.permitAll();
// Add our custom JWT security filter
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
答案 0 :(得分:1)
删除前三行代码。
antMatcher(String)
的Javadoc说:
调用
antMatcher(String)
将覆盖先前对[...],antMatcher(String)
,[...]的调用。
调用4次并没有达到您的预期。