【问题标题】:Access database (EF Core DbContext) in ConfigureServices of ASP.Net Core在 ASP.Net Core 的 ConfigureServices 中访问数据库(EF Core DbContext)
【发布时间】:2021-01-06 21:51:14
【问题描述】:

我想向 ASP.Net Core 授权添加一些策略,这些策略存储在我的数据库中(EF Core 和 MySQL)。目标是根据用户的权限限制用户的访问。据我所知,我应该在Startup 类的ConfigureServices 方法中这样做:

services.AddAuthorizationCore(options =>
{
  options.AddPolicy("CanEditUserGroups", builder =>
  {
    builder.RequireAuthenticatedUser();
    builder.RequireClaim("Permission", "Value");
  });
});

但是,问题是我想要有几个策略并从数据库中读取它们的"Value"。是否可以实例化我的 DbContext 服务并从中读取数据?我做对了吗?

【问题讨论】:

    标签: asp.net-core entity-framework-core asp.net-authorization


    【解决方案1】:

    我找到了解决方案。对于将来可能会遇到此问题的人,这里有一种方法:

    var serviceProvider = services.BuildServiceProvider();
    var permissionRepository =
        (IPermissionRepository)serviceProvider.GetService<IPermissionRepository>();
    var permissions = permissionRepository.GetAll();
    
    services.AddAuthorizationCore(options =>
    {
        foreach (var permission in permissions)
        {
            options.AddPolicy("permission.Title", builder =>
            {
                builder.RequireAuthenticatedUser();
                builder.RequireClaim("Permission", permission.Title);
            });
        }
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多