我想向ASP.Net Core授权添加一些策略,这些策略存储在我的数据库(带有MySQL的EF Core)中。目的是根据用户权限限制用户的访问权限。据我所知,我应该在ConfigureServices
类的Startup
方法中做到这一点:
services.AddAuthorizationCore(options =>
{
options.AddPolicy("CanEditUserGroups", builder =>
{
builder.RequireAuthenticatedUser();
builder.RequireClaim("Permission", "Value");
});
});
但是,问题是我想拥有多个策略并从数据库中读取它们的"Value"
。可以实例化我的DbContext服务并从中读取数据吗?我做对了吗?
答案 0 :(得分:0)
我找到了解决方案。对于将来可能会遇到此问题的人,这是一种解决方法:
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);
});
}
});