在Asp.Net Core 2中使用JwtBearer身份验证时,返回401而不是重定向到登录页面

时间:2018-02-09 15:00:00

标签: asp.net-core jwt

在初创公司中我有

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        ValidIssuer = Configuration["Jwt:Issuer"],
        ValidAudience = Configuration["Jwt:Issuer"],
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
    };
});

以后

app.UseAuthentication();

两个问题

  1. 除了那些具有[AllowAnonymous]的控制器/操作外,如何设置默认启用的授权?
  2. 如何让代码返回401而不是重定向到Login页面?
  3. 关于此问题有很多问题和答案,但它们似乎总是与具有许多身份验证方案的网站有关,例如cookie和jwt。我有一个纯jwt身份验证后端,只有令牌发布者端点才能匿名访问,其他所有内容都经过身份验证和授权。

1 个答案:

答案 0 :(得分:0)

我需要配置 StatusCodePages 中间件,以避免重定向。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseStatusCodePages();
    ...
}