gpt4 book ai didi

asp.net-core - 如何在ASP.NET Core中使用JWT授权重定向到401上的登录页面

转载 作者:行者123 更新时间:2023-12-04 00:30:44 24 4
gpt4 key购买 nike

我的Startup.cs中有此JWT授权配置:

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
};
});

我的HomeController具有[Authorize]属性。因此,在访问“主页/索引”后,我收到401响应,并显示空白页。我想重定向到我的“帐户/登录”页面,但是我不确定该怎么做。

我读到,这不应自动重定向,因为如果未经授权,则对API调用没有意义,然后您将其重定向,那么如何使它们进入401登录页面的正确方法是什么。

请记住,在此项目中,我同时具有[Authorize]属性的Web API和Action方法,因此仅在它是一种操作方法时才需要重定向。

最佳答案

您可以使用StatusCodePages middleware。在您的Configure方法中添加以下inot:

app.UseStatusCodePages(async context => {
var request = context.HttpContext.Request;
var response = context.HttpContext.Response;

if (response.StatusCode == (int)HttpStatusCode.Unauthorized)
// you may also check requests path to do this only for specific methods
// && request.Path.Value.StartsWith("/specificPath")

{
response.Redirect("/account/login")
}
});

I read that this shouldn't automatically redirect because it won't make sense to API calls



这与API调用有关,该API返回页面以外的数据。假设您的应用确实在后台调用了API。将操作重定向到登录页面无济于事,因为应用程序不知道如何在没有用户参与的情况下在后台进行身份验证。

关于asp.net-core - 如何在ASP.NET Core中使用JWT授权重定向到401上的登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com