asp.net-core-mvc - 如何在 ASP.NET Core 3.1 中扩展 Authorize 属性的逻辑?
问题描述
我正在开发一个 ASP.NET Core MVC 应用程序,我希望能够更好地处理未经身份验证的用户通过 AJAX 运行操作时发生的情况。
我发现这个解决方案本质上扩展了Authorize
属性的逻辑并将 AJAX 请求的状态代码设置为401
用户不再经过身份验证的时间。状态代码返回到全局 AJAX 错误处理程序,并且可以执行适当的操作。
我正在尝试在 Core 3.1 中创建属性,但我找不到首先运行过滤器基本逻辑的方法。base.OnAuthorization
方法不存在。我特别不想重写Authorize
属性的功能 - 只是为了扩展它。
如何Authorize
在 Core 3.1 中扩展属性的逻辑?
我正在写的授权属性:
public class AuthorizeUserAttribute : AuthorizeAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
base.OnAuthorization(context); //method does not exist
OnAjaxAuthorization(context);
}
internal void OnAjaxAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated == false)
{
if (context.HttpContext.Request.IsAjaxRequest())
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
}
}
}
顺便说一句,我正在考虑编写一个ActionFilterAttribute
来运行附加代码,但我不能这样做,因为该Authorize
属性总是首先运行。
解决方案
推荐阅读
- javascript - 如何在 Github 上推送 JavaScript 项目?
- angular7 - getFullYear() 不是函数
- azure-devops - 在 Azure Devops 中更改组织 URL 时对管道代理的影响
- javascript - 不同框架中的 Web 组件
- excel - 试图将一行中的特定列复制到另一个工作表中
- javascript - 访问在 react 中工作但不是 react/redux 的 api 数据,我做错了什么?
- javascript - 如何通过nodeJS中的http删除请求删除json文件中的项目?
- python - 为什么 numpy.histogram 尝试使用索引-9223372036854775808(int64 的最小数量)获取值?
- swift - 如何确定月份的第一个日期
- dart - 从 PopupMenuItem 中删除填充(溢出菜单)