сервер ответил со статусом 403 (запрещено) angular - PullRequest
1 голос
/ 14 февраля 2020

Когда я пытаюсь позвонить с this.http.get и @GetMapping, я могу отправить вызов на контроллер пружины,

Когда я пытаюсь изменить значение с this.http.get на this.http.post и @GetMapping to @PostMapping Я не могу вызвать метод контроллера пружины /api/v1/basicauth.

Поскольку у меня есть имя пользователя и пароль, я хочу использовать только PostMapping

Мой код указан ниже : -

Angular

var formData: any = new FormData();
formData.append("userName", username);
formData.append("password", password);

let params = new HttpParams();
params = params.append('username', username);
params = params.append('password', password);
return this.http.post<any>('/api/v1/basicauth', { formData }).pipe(map((res) => {
    this.username = username;
    this.password = password;
}));

Пружинная загрузка: -

@PostMapping(path = "/basicauth")
public AuthenticationBean helloWorldBean(@RequestBody UserDetails user) {
log.info("Start helloWorldBean method");

UserDetails. java

    public class UserDetails {

        private int userId;
        private String userName;
        private String password;
   }

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Не используйте FormData (Angular), поскольку ваш контроллер принимает @RequestBody

ваш formData должен быть примерно таким:

var formData = {"username": username, "password": password};

Остальные автоматически опустошат его до UserDetails класса

1 голос
/ 14 февраля 2020

Клиентская сторона

login(username: string, password: string) {
        return this.http.post<any>('/api/v1/basicauth', { username, password })
            .pipe(map(user => {
                // eg.
                // localStorage.setItem('currentUser', JSON.stringify(user));
                return user;
            }));

Пример из: https://jasonwatmore.com/post/2019/06/22/angular-8-jwt-authentication-example-tutorial

Серверная часть

Вы получаете параметры с помощью @RequestParam, что означает, что вы определяете параметры как http://host:8080/api/auth?password=abc&....

Пожалуйста, отметьте https://www.baeldung.com/spring-request-response-body

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