asp.net-core - 在 ASP.Net Core 的 ConfigureServices 中访问数据库(EF Core DbContext)
问题描述
我想向 ASP.Net Core 授权添加一些策略,这些策略存储在我的数据库中(EF Core with MySQL)。目标是根据用户的权限限制用户的访问。据我所知,我应该ConfigureServices
在类中的方法中Startup
这样做:
services.AddAuthorizationCore(options =>
{
options.AddPolicy("CanEditUserGroups", builder =>
{
builder.RequireAuthenticatedUser();
builder.RequireClaim("Permission", "Value");
});
});
但是,问题是我想要几个策略并"Value"
从数据库中读取它们。是否可以实例化我的 DbContext 服务并从中读取数据?我做对了吗?
解决方案
我找到了解决方案。对于将来可能会遇到此问题的人,这是一种方法:
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);
});
}
});
推荐阅读
- python - 如何从 s3 存储桶中读取内容作为 url
- ios - 在 Objective-C 框架上检测主页按钮
- azure - 如何使用 AGIC 将主机名分配给 Azure 应用程序网关
- python - 查找重复值束并分别对它们执行操作
- api - SonarQube v8.4 API 文档:获取所有项目和特定指标
- react-native - 如何以编程方式删除 React Navigation 中的抽屉项?
- javascript - 为什么茉莉间谍返回一个函数?
- javascript - 带有数据的对象到带有键和值列表的对象中 - javascript
- amazon-web-services - AWS Amplify:使用套接字 IO 作为后端
- javascript - 在 webView Android Studio 中执行按钮单击