繁体   English   中英

服务器以 403 (Forbidden) angular 状态响应

[英]the server responded with a status of 403 (Forbidden) angular

当我尝试使用this.http.get@GetMapping调用时,我可以将调用发送到 spring 控制器,

当我尝试从this.http.get更改为this.http.post以及从@GetMapping@PostMapping我无法调用 spring 控制器/api/v1/basicauth方法。

因为我PostMapping户名和密码,所以我只想使用PostMapping

我的代码如下:-

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");

用户详细信息.java

    public class UserDetails {

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

客户端

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

不要使用FormData (Angular)因为您的控制器正在接受@RequestBody

你的formData应该是这样的

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

Rest 会自动将其反序列化为UserDetails

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM