单个策略的要求

只要满足“Edit Role”声明,策略便成功:

  1. options.AddPolicy("EditRolePolicy", policy => policy.RequireClaim("Edit Role"));

必须拥有“Edit Role”声明,且值为 true:

  1. options.AddPolicy("EditRolePolicy", policy => policy.RequireClaim("Edit Role", "true"));

指定了多个声明值,用户在拥有“Edit Role”声明时,值为 true 或 yes 皆可:

  1. options.AddPolicy("EditRolePolicy", policy => policy.RequireClaim("Edit Role", "true", "yes"));

多个授权要求,声明和角色组合使用

用户拥有 Admin 角色和“Edit Role”声明,然后声明值为“true”或“yes”皆可:

  1. options.AddPolicy("EditRolePolicy", policy => policy
  2. .RequireClaim("Edit Role", "true", "yes")
  3. .RequireRole("Admin"));

必须拥有“Admin”角色及声明类型为“Edit Role”声明值为 true,或拥有“Super Admin”角色:

  1. options.AddPolicy("EditRolePolicy",
  2. policy => policy.RequireAssertion(context =>
  3. context.User.IsInRole("Admin") && context.User.HasClaim(claim => claim.Type == "Edit Role" && claim.Value == "true") ||
  4. context.User.IsInRole("Super Admin")));

ASP.NET Core 中内置的授权要求

  • RequireClasim() 方法用于管理声明授权的需求
  • RequireRole() 方法用于管理角色授权的需求
  • RequireAssertion() 方法用于自定义授权的需求

    自定义授权要求和处理程序

    image.png