簡體   English   中英

不支持的媒體類型 415,但在 Postman 中工作正常

[英]Unsupported Media Type 415, but in Postman works fine

注冊后用戶會得到一個鏈接,鏈接由 userId 和 token 組成。 當用戶點擊它時 - angular項目打開,然后angular從鏈接中獲取userId和token,並發送一個post方法到后端驗證email。

鏈接示例

http://localhost:4200/user/confirmemail/?userId=9bc9a474-d10c-438b-8953-1c32fc57551b&token=Q2ZESjhPRkF6d3BPQ1E5TmtLbWplTnlIZ3g3bzJEVEZQZDQ3MFNSblExaWxBTWh3MmdSMWl2ZkU3djZxcWR3bmY4OFMwd2l6STZOY3VMR2FoZ1ZCM28rWFo1YlJhejhOTE5pamFFdGRETTNiNGttT0lOQ2dZVmdLRVlRdWlKRmtQMVpEWHE0b2t2NVBQZTZ0bkR3cUdrb3JiMWRIQUpRUE5pMTZjTW96YUdJcVZBUUxPSG5pd3NDU3BDeTBNREMvMTVyTlhUNUpCL2tRZTJWMjJlTzVHZ1dDbEh5VWNESGNsNlVTQkpXZ1FJaThDTk1kcUovcmdtV0ZEdEQza2hXR1p6V0pEdz09

驗證 email 的 Post 方法:

        [HttpPost("confirmEmail/{userId}")]
        public async Task<IActionResult> ConfirmEmail(string userId, [FromBody]string token)
        {
            var codeDecodedBytes = WebEncoders.Base64UrlDecode(token);
            var codeDecoded = Encoding.UTF8.GetString(codeDecodedBytes);
            var user = await _userManager.FindByIdAsync(userId);
            var result = await _userManager.ConfirmEmailAsync(user, codeDecoded);
            return Ok(result);
        }

它在 postman 中運行良好: 在此處輸入圖像描述

Angular 項目中的錯誤: 在此處輸入圖像描述

在 Angular 中獲取 userId 和 token

  userId: string;
  token: string;
  constructor(private activatedRoute: ActivatedRoute, private authService: AuthService) {
    this.activatedRoute.queryParams.subscribe(params => {
          this.userId = params['userId'];
          this.token = params['token'];
      });
  }

  ngOnInit(): void {
    this.confirmEmail();
  }

  confirmEmail(){
    this.authService.confirmEmail(this.userId, this.token).subscribe(data => { console.log("success")});
  }

(AuthService) 向后端發送數據

  confirmEmail(userId: string, token: string){
    console.log(userId);
    console.log(token);
    return this.http.post(this.authUrl + `confirmemail/${userId}`, token);
  }

嘗試將Content-Type設置為json類型:

confirmEmail(userId: string, token: string) {
    const body = JSON.stringify(token);
    const options = {
      headers: new HttpHeaders().append('Content-Type', 'application/json')
    };

    return this.http.post(this.authUrl + `confirmemail/${userId}`, body, options)
          .pipe(
              map(res => res)
            , catchError(this.handleError())
          );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM