發(fā)布時(shí)間:2020-10-19
欄目:其他
ASPCMS批量助手 在 ASP.NET Core 中,基于策略的授權(quán)框架旨在分離授權(quán)與應(yīng)用程序邏輯空白區。簡(jiǎn)而言之協調機製,策略是以一系列要求的形式設(shè)計(jì)的實(shí)體,這些要求本身就是當(dāng)前用戶必須滿足的條件形勢。
ASPCMS批量上傳內(nèi)容 最簡(jiǎn)單的策略是實踐者,對(duì)用戶進(jìn)行身份驗(yàn)證,同時(shí)還須滿足用戶與給定角色相關(guān)聯(lián)這一常見(jiàn)要求約定管轄。另一常見(jiàn)要求是ASPCMS批量添加產(chǎn)品 數據,用戶必須有特定聲明或包含某值的特定聲明。
從最一般的意義上來(lái)講發揮,要求就是斷言了嘗試訪問(wèn)正確方法的用戶標(biāo)識(shí)顯著。策略對(duì)象是使用以下代碼進(jìn)行創(chuàng)建:
varpolicy = newAuthorizationPolicyBuilder() .AddAuthenticationSchemes("Cookie, Bearer") .RequireAuthenticatedUser() .RequireRole("Admin") .RequireClaim("editor", "contents") .RequireClaim("level", "senior") .Build();
生成器對(duì)象使用各種擴(kuò)展方法收集要求,再生成策略實(shí)例與時俱進⌒阅??梢钥吹剑蠹s束了身份驗(yàn)證狀態(tài)和方案綜合運用、角色以及通過(guò)身份驗(yàn)證 Cookie 或持有者令牌讀取的任何聲明組合供給。
ASPCMS批量助手 如果預(yù)定義的所有擴(kuò)展方法都不適用于定義要求,始終可以采取最后手段效果較好,即通過(guò)自己的斷言定義新要求。命令如下:
varpolicy = newAuthorizationPolicyBuilder() .AddAuthenticationSchemes("Cookie, Bearer") .RequireAuthenticatedUser() .RequireRole("Admin") .RequireAssertion(ctx => { returnctx.User.HasClaim("editor", "contents") || ctx.User.HasClaim("level", "senior"); }) .Build();
RequireAssertion 方法需要使用 lambda持續,以接收 HttpContext 對(duì)象等多個領域,并返回布爾值。因此產品和服務,斷言就是條件語(yǔ)句應用擴展。
請(qǐng)注意,如果多次連接 RequireRole增多,用戶必須履行所有角色活動上。若要改為表達(dá) OR 條件,可能需要將斷言用作最后手段進一步推進。
在此示例中導向作用,策略實(shí)際上允許角色為內(nèi)容編輯者或高級(jí)用戶的用戶。
注冊(cè)策略
光定義策略還不夠應用的選擇,還必須向授權(quán)中間件注冊(cè)策略十大行動。為此,請(qǐng)?jiān)?Startup 類(lèi)的 ConfigureServices 方法中,將授權(quán)中間件添加為服務(wù)綜合措施,如下所示:
services.AddAuthorization(options=>{ options.AddPolicy("ContentsEditor", policy => { policy.AddAuthenticationSchemes("Cookie, Bearer"); policy.RequireAuthenticatedUser(); policy.RequireRole("Admin"); policy.RequireClaim("editor", "contents"); });}
添加到中間件的每個(gè)策略都有一個(gè)名稱(chēng)可靠保障,用于在 Controller 類(lèi)的 Authorize 屬性中引用策略:
[Authorize(Policy = "ContentsEditor")]publicIActionResult Save(Article article){ // ...}
使用 Authorize 屬性ASPCMS批量添加欄目 ,可以聲明的方式設(shè)置策略設計標準,但也可以通過(guò)操作方法以編程方式調(diào)用策略開展,如圖 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 對(duì)象意向,并返回布爾值。因此重要方式,斷言就是條件語(yǔ)句開展面對面。
請(qǐng)注意,如果多次連接 RequireRole無障礙,用戶必須履行所有角色連日來。若要改為表達(dá) OR 條件,可能需要將斷言用作最后手段認為。
文章地址:http://61py.com/article/other/ASPclddssm.html

- 1通王CMS 2.0簡(jiǎn)介
- 2黑帽網(wǎng)站排名檢測(cè)
- 3MySQL中經(jīng)典的too many connection怎么破
- 4網(wǎng)易郵箱洪陸駕:反垃圾郵件需集合全球力量
- 5站群友鏈換鏈神器
- 6云勢(shì)軟件VirgoEDC助力安徽萬(wàn)邦、迪時(shí)咨詢(xún)等公司臨床試驗(yàn)數(shù)據(jù)采集智能化
- 7Authorize 屬性通過(guò)聲明的方式保護(hù)控制器或其部分方法
- 8域名是稀有資源等多個領域,好的域名品牌,在一定時(shí)期內(nèi)會(huì)越來(lái)越升值
- 9解析常見(jiàn)的PHP緩存技術(shù)有哪些
- 10對(duì)ASP.NET程序員非常有用工具