У меня есть служба отдыха в приложении загрузки Spring.
У меня есть метод, который принимает имя пользователя и пароль как данные json и проверяет эти данные, если они верны, тогда сервис возвращает токен JWT.
Когда я вызываю этот метод через angular, я не могу получить токен авторизации и дважды запросить отправку.
Зачем запрашивать отправку дважды и как получить токен в angular?
import {Component, OnInit} from '@angular/core';
import {Payment} from './Payment';
import {HttpClient, HttpResponse} from '@angular/common/http';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
title = 'Home';
constructor(private http: HttpClient) {
}
ngOnInit() {
this.http.post('http://localhost:8084/login', JSON.stringify({ username: 'mehman', password: 'mehman' }), { observe: 'response' })
.subscribe((response: HttpResponse<any>) => { console.info(response); });
}
}
Вероятно, проблема CORS
Я добавляю @CrossOrigin в свой метод отдыха для этой проблемы => Access-Control-Allow-Origin
Да, но именно поэтому запрос отправляется дважды. Один раз для OPTIONS, один раз для POST. И я думаю, что заголовки в ответе загружаются лениво, поэтому вам нужно получить к ним доступ, чтобы увидеть, как они отображаются.
Как я могу предотвратить двойной запрос? Я не могу понять ваш второй подход.
Я добавил токен в тело ответа в источнике генерации токенов, как показано ниже. res.getWriter (). append ("{\" токен \ ": \" "+ TOKEN_PREFIX +" "+ JWT +" \ "}"); Как я могу предотвратить двойную отправку запроса?





см. ниже решение, которое вы можете сослаться и сравнить с вашим кодом для решения https://blog.angular-university.io/angular-jwt-authentication/
Пожалуйста, отправьте сервисный код и код компонента. Так мы сможем лучше понять вашу проблему и предложить решение.