返回顶部
关闭软件导航
位置:首页 > 资讯 > 其他>ASP策略到底是什么

ASPCMS批量助手   在 ASP.NET Core 中,基于策略的授权框架旨在分离授权与应用程序逻辑。简而言之,策略是以一系列要求的形式设计的实体,这些要求本身就是当前用户必须满足的条件。

ASPCMS批量上传内容   最简单的策略是,对用户进行身份验证,同时还须满足用户与给定角色相关联这一常见要求。另一常见要求是ASPCMS批量添加产品 ,用户必须有特定声明或包含某值的特定声明。

  从最一般的意义上来讲,要求就是断言了尝试访问正确方法的用户标识。策略对象是使用以下代码进行创建:

  varpolicy = newAuthorizationPolicyBuilder() .AddAuthenticationSchemes("Cookie, Bearer") .RequireAuthenticatedUser() .RequireRole("Admin") .RequireClaim("editor", "contents") .RequireClaim("level", "senior") .Build();

  生成器对象使用各种扩展方法收集要求,再生成策略实例。可以看到,要求约束了身份验证状态和方案、角色以及通过身份验证 Cookie 或持有者令牌读取的任何声明组合。

ASPCMS批量助手   如果预定义的所有扩展方法都不适用于定义要求,始终可以采取最后手段,即通过自己的断言定义新要求。命令如下:

  varpolicy = newAuthorizationPolicyBuilder() .AddAuthenticationSchemes("Cookie, Bearer") .RequireAuthenticatedUser() .RequireRole("Admin") .RequireAssertion(ctx => { returnctx.User.HasClaim("editor", "contents") || ctx.User.HasClaim("level", "senior"); }) .Build();

  RequireAssertion 方法需要使用 lambda,以接收 HttpContext 对象,并返回布尔值。因此,断言就是条件语句。

  请注意,如果多次连接 RequireRole,用户必须履行所有角色。若要改为表达 OR 条件,可能需要将断言用作最后手段。

  在此示例中,策略实际上允许角色为内容编辑者或高级用户的用户。

  注册策略

  光定义策略还不够,还必须向授权中间件注册策略。为此,请在 Startup 类的 ConfigureServices 方法中,将授权中间件添加为服务,如下所示:

  services.AddAuthorization(options=>{ options.AddPolicy("ContentsEditor", policy => { policy.AddAuthenticationSchemes("Cookie, Bearer"); policy.RequireAuthenticatedUser(); policy.RequireRole("Admin"); policy.RequireClaim("editor", "contents"); });}

  添加到中间件的每个策略都有一个名称,用于在 Controller 类的 Authorize 属性中引用策略:

  [Authorize(Policy = "ContentsEditor")]publicIActionResult Save(Article article){ // ...}

  使用 Authorize 属性ASPCMS批量添加栏目 ,可以声明的方式设置策略,但也可以通过操作方法以编程方式调用策略,如图 2所示。

  图 2:以编程方式检查策略

  publicclassAdminController : Controller{ privateIAuthorizationService _authorization; publicAdminController(IAuthorizationService authorizationService) { _authorization = authorizationService; } publicasyncTask { returnctx.User.HasClaim("editor", "contents") || ctx.User.HasClaim("level", "senior"); }) .Build();

  RequireAssertion 方法需要使用 lambda,以接收 HttpContext 对象,并返回布尔值。因此,断言就是条件语句。

  请注意,如果多次连接 RequireRole,用户必须履行所有角色。若要改为表达 OR 条件,可能需要将断言用作最后手段。

如果您觉得 ASP策略到底是什么 这篇文章对您有用,请分享给您的好友,谢谢
文章地址:https://www.tianxianmao.com/article/other/ASPclddssm.html
解放双手无尽可能,有问题添加天线猫微信