如何在ASP.NET Core中创建自定义授权(ASP.NET 5)

时间:2016-03-01 20:26:11

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc asp.net-core-1.0

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

这就是我所做的。

  1. ConfigureServices中的StartupClass

    services.AddAuthorization(options =>
    {    
        options.AddPolicy("Authorize", policy =>
        {   
             policy.AddRequirements(new MyRequirement());
        });
    });
    
  2. MyRequirement

    public class MyRequirement : AuthorizationHandler<MyRequirement>, IAuthorizationRequirement
    {
        protected override void Handle(AuthorizationContext context, MyRequirement requirement)
        {
            //some work
            //if shloud be authorized
            context.Succeed(requirement);
        }
    }
    
  3. 的TestController

    [Authorize("Authorize")]
    [Route("api/[controller]")]
    public class TestController : Controller
    {
      ...
    }
    
  4. 我错过了什么?永远不会调用MyRequirement授权程序。 谢谢。

1 个答案:

答案 0 :(得分:6)

我相信你错过了这一部分:

services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>();

Source