C# 在ASP.NET核心MVC中捕获HandleUnauthorizedRequest

C# 在ASP.NET核心MVC中捕获HandleUnauthorizedRequest,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我正在开发一个ASP.NETMVC核心应用程序。我的项目中有基于策略的身份验证。在所有我的控制器上添加了[Authorize]属性。我的要求是,每当有未经授权的访问,我必须做一些工作。因此,我必须重写HandleUnauthorizedRequest。但是我找不到任何方法来使用这个方法 我的要求是,所有其他[Authorize]属性功能都应按原样工作,但每当有未经授权的访问时,我必须将其写入日志文件并将其转储到数据库中 我被卡住了,如果您使用cookie Authencion,您可以像这样配置c

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

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


我被卡住了,如果您使用cookie Authencion,您可以像这样配置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;
            }
        };
                
    });

谢谢@mj1313,这正是我想要的。只有一个问题,在这个“OnRedirectToAccessDenied”事件中,我想重新定向到一个自定义视图(页面)。目前,我得到一个空白页。您能否解释一下,我如何使用此“OnRedirectToAccessDenied”事件重新定向到视图。这将是一个巨大的优势。CookieAuthenticationOptions中有一个
AccessDeniedPath
选项。您可以使用它重定向到自定义页面。我已经编辑了我的答案。谢谢@mj1313,o.Events=new CookieAuthenticationEvents{OnRedirectToAccessDenied=new Func(上下文=>{context.Response.Redirect(“/Home/Error”);返回context.Response.CompleteAsync(); }) }; 这段代码对我有用,我必须把这件事记录在数据库里。我正在应用程序中使用存储库服务模式。因此,此时(在Startup.cs中),我无法访问任何存储库或服务。你知道我如何在数据库中记录这些信息吗。我只想在有未经授权的访问请求时进行服务呼叫。我相信我必须将一个方法绑定到“OnRedirectToAccessDenied”事件,但我还不能确定如何将服务方法绑定到这个属性。如果你有什么想法,那对我会有很大的帮助。