Como redirecionar para a página de logon no 401 usando a autorização JWT no ASP.NET Core
Eu tenho essa configuração de autorização JWT em meu Startup.cs:
services.AddAuthentication(opts =>
{
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(opts =>
{
opts.RequireHttpsMetadata = false;
opts.SaveToken = true;
opts.TokenValidationParameters = new TokenValidationParameters()
{
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("my_secret_key")),
ValidIssuer = "iss",
ValidAudience = "aud",
ValidateIssuerSigningKey = true,
ValidateLifetime = true
};
});
Meu HomeController possui o atributo [Autorizar]. Assim, ao acessar o Home / Index, recebo uma resposta 401 e recebo uma página em branco. Desejo redirecionar para minha página Conta / Logon, mas não sei como fazê-lo.
Eu li que isso não deve redirecionar automaticamente, porque não fará sentido para chamadas à API se elas não estiverem autorizadas e você as redirecionar; então, qual é a maneira correta de como eu as levaria à página de login no 401.
Lembre-se de que neste projeto eu tenho os métodos API e Ação da Web com atributos [Autorizar], portanto, preciso redirecionar apenas quando for um método de ação.