1

我在 ASP.NET Core 3.1 Web Api 项目中遇到不记名身份验证问题。

我这样配置身份验证:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddJwtBearer(options =>
                {
                    options.RequireHttpsMetadata = false;
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuer = true,
                        ValidIssuer = AuthHelper.Issuer,
                        ValidateAudience = true,
                        ValidAudience = AuthHelper.Audience,
                        ValidateLifetime = true,
                        IssuerSigningKey = AuthHelper.GetSymmetricSecurityKey(),
                        ValidateIssuerSigningKey = true,
                    };

                });

此外,我在控制器和配置方法中添加了[Authorize]属性。app.UseAuthorization();

我在 Postman 中配置了请求。我尝试在“授权”选项卡和手动方式中配置授权(添加“授权”标题)。同样的结果:我得到了正确的答案,没有任何错误。

但是,当我从我的颤振应用程序发送请求时,我收到“404 Not Found”错误。

从颤振应用程序获取请求:

Map<String, String> authHeaders = <String, String>{
    'Content-Type': 'application/json; charset=UTF-8',
    'Authorization': 'Bearer $authToken'
  };
    final response = await http.get(_url, headers: authHeaders);

有任何想法吗?我错过了什么?

4

1 回答 1

2

我知道问题是什么。我的控制器仍然使用 Cookies 身份验证方法(不是承载)。

解决方案:替换[Authorize][Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

为什么邮递员的请求可以正常工作?

邮递员设置 cookie 并记住其他请求的 cookie。因此,当我测试登录控制器时,邮递员将.AspNetCore.Identity.Applicationcookie 添加到自己的集合中。

于 2020-08-26T15:16:56.873 回答