c# - 在 ASP.NET Core MVC 中捕获 HandleUnauthorizedRequest
问题描述
我正在开发一个 ASP.NET MVC Core 应用程序。我的项目中有基于策略的身份验证。在我的所有控制器上添加[Authorize]
了属性。我的要求是,每当有未经授权的访问时,我都必须做一些工作。因此,我必须覆盖HandleUnauthorizedRequest
. 但我无法找到任何方法来访问此方法。
我的要求是,所有其他[Authorize]
属性功能都应该按原样工作,但是每当有未经授权的访问时,我必须将其写入日志文件并将其转储到数据库中。
我被卡住了,任何帮助将不胜感激
解决方案
如果您使用 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;
}
};
});