Я думаю, что вы на правильном пути, но у вас, вероятно, есть проблема с CORS и заголовками, авторизованными в ответ серверным сервером.
Проверьте с помощью этого кода полученные вами заголовки:
this.http.post('http://localhost:8090/login', body, { observe: 'response'}).subscribe(response => {
const keys = response.headers.keys();
const headers = keys.map(key =>
`${key}: ${response.headers.get(key)}`);
console.table(headers);
})
Если вы не видите заголовка Authorization
в выводе консоли, вам следует проверить конфигурацию вашего бэкенда.
Подробнее см. мой ответ на вопрос о конфигурации CORS.
По крайней мере, вам следует: - включить CORS в Spring Security - добавить отображение CORS по умолчанию
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain2.com")
.allowedMethods("PUT", "DELETE")
.allowedHeaders("header1", "header2", "header3")
.exposedHeaders("Authorization")
.allowCredentials(false).maxAge(3600);
}
Здесь в ответе выставлен заголовок Authorization
.
Примечание
Я предлагаю ограничить открытые заголовки указанной конечной точкой c, например, login
, а также выбрать другой заголовок, например 'x-auth-token for example, and send only token (not with
Bearer`).
Поскольку Authorization
с синтаксисом Bearer TOKEN
используется для запроса от внешнего интерфейса к внутреннему.