c# - 自定义身份验证中间件 - 如何检查请求是匿名的还是授权的?
问题描述
我正在尝试编写自己的身份验证中间件代码。
在旧的 HttpModules 中,当请求“授权”页面时,我可以使用“OnAuthenticateRequest”。
我的中间件代码是这样的:
public async Task Invoke(HttpContext context)
{
if (!context.User.Identity.IsAuthenticated)
{
}
}
...但这也将检查 IsAuthenticated 与 [AllowAnonymous] 属性的请求。
如何从我的中间件检查请求是否具有属性 [AllowAnonymous] 或 [Authorize]?
我需要能够做类似的事情......
public async Task Invoke(HttpContext context)
{
if (HasAuthorizeAttribute && !context.User.Identity.IsAuthenticated)
{
}
await _next.Invoke(context);
}
谢谢。
解决方案
有一种方法可以从中间件内部检查请求是否针对标记为 [匿名] 的页面。
//inside your middleware
var endpoint = context.GetEndpoint();
if (endpoint?.Metadata?.GetMetadata<IAllowAnonymous>() is object)
{
await _next(context);
return;
}
在此博客上找到的原始解决方案:Anonymous Aware Middleware
推荐阅读
- mongodb - 如何使用 setPoolLimit 来管理连接?
- r - 使用 $ 运算符和过滤器时,Rshiny 输出函数会中断
- jquery - 如何使用 Fulltable 创建文本区域和日期选择器?
- javascript - 我如何使它只发送部分消息?不和谐.js
- javascript - Mongodb update/$set 仅在每隔一次调用函数时才有效-并返回 [object Object]
- python - 将历史国际象棋保存到 db sqlite django 时出错
- nix - 如何更改我的 nixos OS 分区的 UUID 并更新引导加载程序?
- symfony - 自定义环境变量文档
- ruby - 如何拆分和保持数字在一起
- javascript - 在 img 中创建动态 URL 的 Java 脚本