gpt4 book ai didi

c# - 如何从 asp net core 中的 AuthorizationFilter 重定向到登录页面?

转载 作者:行者123 更新时间:2023-12-05 08:26:09 26 4
gpt4 key购买 nike

当我返回 ForbidResult() 时,它会重定向到启动时指定的 AccessDenied 页面。我想对 UnauthorizedResult() 做同样的事情,但重定向到 Login 页面。

P.S. 我没有在 Controller 中使用标准的 Authorize 属性我有自己的。

授权过滤器:

public class MyFilter : IAuthorizationFilter
{
//

public MyFilter()
{
//
}

public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
var hasPermission= ... ;
if (!hasPermission)
{
context.Result = new ForbidResult();
}
}
else
{
context.Result = new UnauthorizedResult();
}
}
}

启动:

services.AddAuthentication.AddCookie(options =>
{
options.LoginPath = "/Accounts/Login";
options.LogoutPath = "/Accounts/Logout";
options.AccessDeniedPath = "/Accounts/AccessDenied";
});

最佳答案

要重定向到在 options.LoginPath = "/Accounts/Login"; 中配置的登录页面,您可以尝试以下代码:

public class MyFilter : IAuthorizationFilter
{
//

public MyFilter()
{
//
}

public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
var hasPermission= ... ;
if (!hasPermission)
{
context.Result = new ForbidResult();
}
}
else
{
context.Result = new ChallengeResult(CookieAuthenticationDefaults.AuthenticationScheme);
}
}
}

关于c# - 如何从 asp net core 中的 AuthorizationFilter 重定向到登录页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57853415/

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