首页 > 解决方案 > 当我正确发送令牌时出现未经授权的错误

问题描述

我使用 Web API 和 Angular 8。我尝试保护我的服务器端,但随后我发送的每个令牌都收到未经授权的错误。

我试图在互联网上寻找解决方案,但我没有找到任何东西。

那是我的代码

C#:

public string GenerateTokenForUser(UsersDTO user)
    {
        var signingKey = "xxxxxxxxxxxxxxxxxxxxxx";
        var now = DateTime.UtcNow;
        var key = new SymmetricSecurityKey(Encoding.Default.GetBytes(signingKey));
        var creds = new SigningCredentials(key, 
        SecurityAlgorithms.HmacSha256);
        var claimsIdentity = new ClaimsIdentity(new List<Claim>()
        {
            new Claim(ClaimTypes.Name, user.id.ToString())
        }, "custom");
        var securityTokenDescriptor = new SecurityTokenDescriptor()
        {
            Issuer = "self",
            Subject = claimsIdentity,
            SigningCredentials = creds,
            Expires = now.AddHours(5)
        };
    var tokenHandler = new JwtSecurityTokenHandler();
    var plainToken = tokenHandler.CreateToken(securityTokenDescriptor);
    var signedAndEncodedToken = tokenHandler.WriteToken(plainToken);
    return signedAndEncodedToken;
}

网络接口:

    [Authorize]
    [Route("GetLearnedPagesCount/{userId}")]
    public IHttpActionResult GetLearnedPagesCount(int userId)
    {
      ...
    }

角度:

httpOptions = {
  headers: new HttpHeaders({
    'Authorization': `Bearer `+this.cookieService.get('token')
  })
};

 GetLearnedPages(): Observable<Array<MyPages>> {
    return this.httpClient.get<Array<MyPages>>(this.serverServ.URL + "Controller/GetLearnedPages/" 
    + this.user.id, this.httpOptions);
  }

我得到了一个正确的令牌,我也从 cookie 中得到了它。

我的问题可能是什么?

谢谢!

标签: angularasp.net-web-apijwt

解决方案


推荐阅读