Как получить заголовок ответа с токеном jwt в Angular с сервера - PullRequest
0 голосов
/ 24 марта 2020

Я использую Spring Security с токеном JWT для авторизации. Я отправляю почтовый запрос с логином и паролем и получаю заголовок ответа с токеном jwt в поле авторизации. enter image description here

Как получить этот токен от angular? Я пытался использовать этот код, но я получил нулевое значение. Пожалуйста, помогите.

login() {


    const body = { username: this.user, password: this.pass };
    this.http.post('http://localhost:8090/login', body, { observe: 'response'}).subscribe(
      (response) => {
        console.log(response.headers.get("Authorization"));
      });


 }

1 Ответ

0 голосов
/ 24 марта 2020

Я думаю, что вы на правильном пути, но у вас, вероятно, есть проблема с 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 используется для запроса от внешнего интерфейса к внутреннему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...