-1
我正在努力使我的Spring Security配置正確完成。 我有JWT安全設置,但我希望它只能在/api**
上工作,並且我無法正確完成...即使當我嘗試點擊localhost:8080
時,我也收到了來自JWTFilter的錯誤。Spring Security將篩選器應用於所有路徑,而不僅僅是「/ api **」
這是我的配置:
public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.addFilterBefore(new CORSFilter(), ChannelProcessingFilter.class)
.exceptionHandling()
.authenticationEntryPoint(this.restAuthEntryPoint)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "**").permitAll()
.antMatchers(FORM_BASED_REGISTRATION_ENTRY_POINT).permitAll()
.antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll()
.and()
.authorizeRequests()
.antMatchers(TOKEN_BASED_AUTH_ENTRY_POINT).authenticated()
.and()
.addFilterBefore(buildJWTLoginFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(buildJWTAuthFilter(), UsernamePasswordAuthenticationFilter.class);
}
理論上它應該只對API應用過濾器,但它在某種程度上適用他們的所有路徑。
有人可以幫助使其工作,因爲它應該工作,所以只有/api**
將被保護,我可以自由訪問/api
以外的所有路徑?
.antMatchers(HttpMethod.GET,TOKEN_BASED_AUTH_ENTRY_POINT).permitAll()可能是你應該精確允許列舉HTTPMethod –
什麼?您只複製了我的代碼的一行...登錄和註冊工作正常 –
您爲什麼認爲,您的配置只適用於'/ api **'?你沒有限制它。默認情況下,你的配置適用於'/ **'。你爲什麼認爲你的過濾器只適用於'/ api **'?顯示你的過濾器的代碼,我想你沒有實施限制。 – dur