防止授权属性重定向到访问被拒绝的路径

问题描述 投票:0回答:1

我非常鄙视重定向到状态代码页面,我认为如果某个 URL 出现错误,响应应该返回到该 URL。然而 ASP.NET 将 403 响应重定向到

/Account/AccessDenied
。有没有办法挂钩回调并返回视图而不重定向?

例如,如果用户导航到

/admin
需要
Administrator
角色但他们没有它,服务器将返回我的自定义视图而不重定向。

asp.net asp.net-core-mvc
1个回答
0
投票

在尝试了所有可能的代码后,我发现无法将重定向限制为访问被拒绝的页面,但作为解决方法,您可以编写自定义响应:

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.