小编Bee*_*eeg的帖子

自定义授权过滤最小 API .Net 6

我正在探索 .Net 6 中的最小 API,并尝试将自定义授权过滤器应用到端点(通过属性或扩展)。但在我看来,我做错了什么,或者它根本就不是为了以这种方式工作而设计的(如果是这样,那就太可悲了)。除了最小 API 中属性的默认用法之外,在文档中找不到任何内容[Authorize]

这是过滤器

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class CustomAuthorizeAttribute : Attribute, IAuthorizationFilter
{
    //Checking tokens
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试在控制器级别应用它,它工作得很好

[CustomAuthorize]
public class CustomController : ControllerBase
{
    //Necessary routing
}
Run Code Online (Sandbox Code Playgroud)

但是如果我切换到 Minimap API 符号并尝试使用属性

app.MapGet("/customEndpoint", 
        [CustomAuthorize] async ([FromServices] ICustomService customService, Guid id) => 
            await customService.GetCustomStuff(id));
Run Code Online (Sandbox Code Playgroud)

甚至是扩展方法

app.MapGet("/customEndpoint", 
        async ([FromServices] ICustomService customService, Guid id) => 
            await customService.GetCustomStuff(id)).WithMetadata(new CustomAuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)

它就是行不通。过滤器甚至没有被构造。

我错过了什么或做错了什么?提前谢谢

c# asp.net .net-6.0 minimal-apis

3
推荐指数
1
解决办法
9251
查看次数

标签 统计

.net-6.0 ×1

asp.net ×1

c# ×1

minimal-apis ×1