Не приходят заголовки в spring security
Сделал авторизацию с помощью JWT фильтра, когда работаю с POSTMANом, то все хорошо, но когда начинаю делать запросы из браузера, то все ломается. Ставил точки остановы в JWT фильтре и при запросе из браузера он не находит токен. + в браузере пишет:
Но допустим если я делаю этот эндпоинт permitAll(), то хэдер уже будет и я смогу сделать авторизацию(только зачем она нужна, если permitAll).
JS запрос:
let path = "http://localhost:8081/api/posts"
let config = {
headers: {
"Authorization": "Bearer_"+localStorage.access_token
}
}
await axios.get(path, config).then(response=>{
messages = response.data
})
Postman:
Браузер:
Конфигурация spring security:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(new CorsFilter(), SessionManagementFilter.class)
.csrf().disable()
.authorizeRequests()
.antMatchers(LOGIN_ENDPOINT, REGISTRATION_ENDPOINT).permitAll()
.antMatchers(ADMIN_ENDPOINT).hasRole("ADMIN")
.antMatchers(POST_ENDPOINT).hasRole("USER")
.anyRequest().authenticated().and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("*")
.allowedOrigins("*")
.allowedHeaders("*");
}
Ответы (1 шт):
Автор решения: AlekseiGaile
→ Ссылка
Вам надо разрешить Cross-Origin Resource Sharing (CORS) запросы. Добавьте в класс конфигурации spring security следующий бин:
@Bean
CorsConfigurationSource corsConfigurationSource() {
final UrlBasedCorsConfigurationSource source = new
UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config.applyPermitDefaultValues());
return source;
}

