【发布时间】:2019-03-08 18:27:00
【问题描述】:
我是 asp.net core 2.0 的身份 2.1.2,我有应用程序声明表,其中包含声明类型和声明值 即资产,资产编辑,资产,资产视图,其中声明类型与不同的声明值相同,我正在使用声明类型名称创建策略,这对我来说工作正常,不知道如何在一个操作中添加多个策略。下面的代码在启动文件中用于创建策略。
services.AddAuthorization(options =>
{
var dbContext = SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder<MyDBContext>(),
Configuration.GetConnectionString("TestIdentityClaimAuth")).Options;
var dbCon = new MyDBContext(dbContext);
//Getting the list of application claims.
var applicationClaims = dbCon.ApplicationClaims.ToList();
var strClaimValues = string.Empty;
List<ClaimVM> lstClaimTypeVM = new List<ClaimVM>();
IEnumerable<string> lstClaimValueVM = null;// new IEnumerable<string>();
lstClaimTypeVM = (from dbAppClaim
in dbCon.ApplicationClaims
select new ClaimVM
{
ClaimType = dbAppClaim.ClaimType
}).Distinct().ToList();
foreach (ClaimVM objClaimType in lstClaimTypeVM)
{
lstClaimValueVM = (from dbClaimValues in dbCon.ApplicationClaims
where dbClaimValues.ClaimType == objClaimType.ClaimType
select dbClaimValues.ClaimValue).ToList();
options.AddPolicy(objClaimType.ClaimType, policy => policy.RequireClaim(objClaimType.ClaimType, lstClaimValueVM));
lstClaimValueVM = null;
}
});
在我的控制器中使用这样的Autherize属性。
[Authorize(Policy = "Assets Edit")]
请提前给它遮光。
【问题讨论】:
-
我认为您最好阅读文档:docs.microsoft.com/nl-nl/aspnet/core/security/authorization/… 而不是添加各种策略,而是使用授权处理程序。
标签: c# asp.net-core claims-based-identity