我想在控件中自定义实现[Authorize]属性。

这就是我所做的。

ConfigureServices中的

  • StartupClass
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Authorize", policy =>
        {
             policy.AddRequirements(new MyRequirement());
        });
    });
    
  • 我的需求
    public class MyRequirement : AuthorizationHandler<MyRequirement>, IAuthorizationRequirement
    {
        protected override void Handle(AuthorizationContext context, MyRequirement requirement)
        {
            //some work
            //if shloud be authorized
            context.Succeed(requirement);
        }
    }
    
  • TestController
    [Authorize("Authorize")]
    [Route("api/[controller]")]
    public class TestController : Controller
    {
      ...
    }
    

  • 我想念的是什么?永远不会调用MyRequirementauthorizationhader。
    谢谢你。

    最佳答案

    我相信您缺少这一部分:

    services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>();
    

    Source

    关于asp.net - 如何在ASP.NET Core(ASP.NET 5)中创建自定义授权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35732769/

    10-11 23:31