搜索具有大量权限的基于声明的授权的最佳实践asp net core?

雷斯泰尔

我正在使用ASP Net Core WebAPI处理我的应用程序中的安全性,在我的应用程序中,管理员创建了一个具有权限的新用户,并且json发送回如下所示:

User: {
     Name:"Alex",
     SurName:"Park",
     Email: "[email protected]",
Permission: {
    EditEmployee: true,
    DeleteEmployee: true,
    CreateEmployee: false,
    EditClient: true,
    DeleteClient: true,
    CreateClient: false,
    .....
    ...... // more than 15 other permission
}
}

在我的数据库中,我有表用户:具有RoleId外键表角色具有用户和表UserClaims的alll角色,该表保存了具有所有许可权值的UserId,键入我的问题是:如果我在启动时在服务中添加策略,我必须定义政策 ; 还有15个,我认为很多

services.AddAuthorization(options =>
  services.AddAuthorization(options =>
    {
        options.AddPolicy("EmployeeEdit", policy => policy.RequireClaim("EditEmployee"));
    ...
    ... // SAME WORK WITH THE OTHER CLAIMS
    });

我问是否有使代码最小化的良好实践,谢谢

卡尼

您可以通过来动态创建授权策略AuthorizationPolicyProvider但是还需要提供索赔。

自定义一个AuthorizationPolicyProvider,它可以获取策略名称,我们可以根据该策略名称创建策略。

   public class CustomAuthorizepolicyProvider : DefaultAuthorizationPolicyProvider
   {
    public CustomAuthorizepolicyProvider(IOptions<AuthorizationOptions> options):base(options)
    {

    }
    public override Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
    {
        //generate the authorization policy
        var claims= new List<string> 
        {
          // give 15 claims, or get the claims from database
        };

        foreach(var claim in claims)
        {
            if (claim == policyName)
            {
                return Task.FromResult(new AuthorizationPolicyBuilder().RequireClaim(claim).Build());
            }
        }
        
        return base.GetPolicyAsync(policyName);
    }
   }

注意:CustomAuthorizepolicyProvider在服务中注册为单例。

services.AddSingleton<IAuthorizationPolicyProvider,CustomAuthorizepolicyProvider>();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?

来自分类Dev

具有基于角色的授权的ASP.NET Web Api

来自分类Dev

具有EntityFrameworkCore的ASP.NET Core中的SQLite

来自分类Dev

基于Asp.Net Core策略的授权以401 Unauthorized结尾

来自分类Dev

具有简单注入器的ASP.NET Core

来自分类Dev

创建项目ASP.NET Core(.NET Core)和ASP.NET Core(.NET Framework)有什么区别

来自分类Dev

.NET Core是否有Rx.NET?

来自分类Dev

如何使用.Net Core授权AD用户

来自分类Dev

如何在ASP.Net Core(WebAPI)中基于HTTP谓词和其他属性声明性地指定授权策略

来自分类Dev

.NET Core设置-最佳实践

来自分类Dev

ASP.NET Core返回

来自分类Dev

具有基于自定义角色的授权的ASP.Net Core 3.0 Windows身份验证

来自分类Dev

ASP.NET Core WebSockets

来自分类Dev

.NET Core 3.1基于角色的授权失败,出现403异常

来自分类Dev

ASP.NET Core 3.1 Web API基于角色的授权不起作用

来自分类Dev

在Asp.Net Core应用中使用连接字符串的最佳实践

来自分类Dev

具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

来自分类Dev

.Net Core Businnes层最佳实践

来自分类Dev

具有COM对象的ASP.NET CORE WEB API

来自分类Dev

在ASP.NET Core API中返回计算数据的最佳实践

来自分类Dev

在EF Core和ASP.NET Core中处理并发的最佳实践?

来自分类Dev

asp .net 和 asp .net core 有什么区别?

来自分类Dev

asp.net core 2.0 windows基于角色的授权总是返回403

来自分类Dev

ASP.NET Core 2.1:Razor Pages - 基于角色的授权不起作用

来自分类Dev

如何使用 ASP.NET Core 中的声明检查 JWT 中的权限?

来自分类Dev

具有依赖瞬态的 ASP.NET Core DI

来自分类Dev

ASP.NET Core 身份的 IdentityServer4 基于角色的授权 = 拒绝访问

来自分类Dev

使用授权过滤器在asp.net core中实现基于权限的授权

来自分类Dev

使用 .Net Core 检查目录是否具有读写权限

Related 相关文章

  1. 1

    ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?

  2. 2

    具有基于角色的授权的ASP.NET Web Api

  3. 3

    具有EntityFrameworkCore的ASP.NET Core中的SQLite

  4. 4

    基于Asp.Net Core策略的授权以401 Unauthorized结尾

  5. 5

    具有简单注入器的ASP.NET Core

  6. 6

    创建项目ASP.NET Core(.NET Core)和ASP.NET Core(.NET Framework)有什么区别

  7. 7

    .NET Core是否有Rx.NET?

  8. 8

    如何使用.Net Core授权AD用户

  9. 9

    如何在ASP.Net Core(WebAPI)中基于HTTP谓词和其他属性声明性地指定授权策略

  10. 10

    .NET Core设置-最佳实践

  11. 11

    ASP.NET Core返回

  12. 12

    具有基于自定义角色的授权的ASP.Net Core 3.0 Windows身份验证

  13. 13

    ASP.NET Core WebSockets

  14. 14

    .NET Core 3.1基于角色的授权失败,出现403异常

  15. 15

    ASP.NET Core 3.1 Web API基于角色的授权不起作用

  16. 16

    在Asp.Net Core应用中使用连接字符串的最佳实践

  17. 17

    具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

  18. 18

    .Net Core Businnes层最佳实践

  19. 19

    具有COM对象的ASP.NET CORE WEB API

  20. 20

    在ASP.NET Core API中返回计算数据的最佳实践

  21. 21

    在EF Core和ASP.NET Core中处理并发的最佳实践?

  22. 22

    asp .net 和 asp .net core 有什么区别?

  23. 23

    asp.net core 2.0 windows基于角色的授权总是返回403

  24. 24

    ASP.NET Core 2.1:Razor Pages - 基于角色的授权不起作用

  25. 25

    如何使用 ASP.NET Core 中的声明检查 JWT 中的权限?

  26. 26

    具有依赖瞬态的 ASP.NET Core DI

  27. 27

    ASP.NET Core 身份的 IdentityServer4 基于角色的授权 = 拒绝访问

  28. 28

    使用授权过滤器在asp.net core中实现基于权限的授权

  29. 29

    使用 .Net Core 检查目录是否具有读写权限

热门标签

归档