首页 > 解决方案 > 在 ASP.NET Core MVC 中捕获 HandleUnauthorizedRequest

问题描述

我正在开发一个 ASP.NET MVC Core 应用程序。我的项目中有基于策略的身份验证。在我的所有控制器上添加[Authorize]了属性。我的要求是,每当有未经授权的访问时,我都必须做一些工作。因此,我必须覆盖HandleUnauthorizedRequest. 但我无法找到任何方法来访问此方法。

我的要求是,所有其他[Authorize]属性功能都应该按原样工作,但是每当有未经授权的访问时,我必须将其写入日志文件并将其转储到数据库中。

我被卡住了,任何帮助将不胜感激

标签: c#asp.net-core-mvc

解决方案


如果您使用 cookie 身份验证,您可以像这样配置 cookie AccessDenied 事件

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(config => {
        config.Events = new CookieAuthenticationEvents
        {
            config.AccessDeniedPath = "Page Path"; //Add this line
            OnRedirectToAccessDenied = context =>
            {
                //do some logging
                return Task.CompletedTask;
            }
        };
                
    });

推荐阅读