我非常鄙视重定向到状态代码页面,我认为如果某个 URL 出现错误,响应应该返回到该 URL。然而 ASP.NET 将 403 响应重定向到
/Account/AccessDenied
。有没有办法挂钩回调并返回视图而不重定向?
例如,如果用户导航到
/admin
需要 Administrator
角色但他们没有它,服务器将返回我的自定义视图而不重定向。
在尝试了所有可能的代码后,我发现无法将重定向限制为访问被拒绝的页面,但作为解决方法,您可以编写自定义响应:
builder.Services.AddAuthentication("MyCookieAuth")
.AddCookie("MyCookieAuth", options =>
{
options.LoginPath = "/Account/Login";
options.Events = new CookieAuthenticationEvents
{
OnRedirectToAccessDenied = context =>
{
// Prevent redirection when access is denied
context.Response.StatusCode = StatusCodes.Status403Forbidden;
return context.Response.WriteAsync("Access Denied: You do not have permission to access this resource.");
}
};
});