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

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

我想在控件中自定义实现 [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);
        }
    }
    
  • 测试 Controller
    [Authorize("Authorize")]
    [Route("api/[controller]")]
    public class TestController : Controller
    {
      ...
    }
    

  • 我错过了什么? MyRequirement authorizationhader 永远不会被调用。
    谢谢你。

    最佳答案

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

    services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>();
    

    Source

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

    相关文章:

    asp.net - 将 asp.net 4.0 MVC 3 站点部署到 IIS 7 时禁止访问 403

    asp.net-mvc - 在 MVC 中使用内存流和 DotNetZip 给出 "Cannot access a closed Stream"

    javascript - ASP MVC 将数组对象发送到 JavaScript 函数

    c# - Razor 页面命名空间与类库冲突

    asp.net - .net 下拉列表对齐文本

    c# - 我有 .NET 4.6.2 但 VS 仍然提示它

    c# - 使用 : The magic number in GZip header is not correct. 解压缩上传的文件确保您传入的是 GZip 流

    c# - 注入(inject)对象的两个实例

    asp.net-core - Visual Studio 2015 中的 Aurelia 项目设置和文件夹结构 : what goes in wwwroot?

    c# - 在 Azure 上设置 ASPNETCORE_ENVIRONMENT 变量时,为什么需要发布我的 project.json