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