[Authorize]publicclassCustomerController : Controller{ ...}
如果未指定參數,此屬性僅檢查用戶是否經過身份驗證。不過ASPCMS批量上傳內容 ,此屬性支持 Roles 等其他屬性。Roles 屬性指明將對具有任一所列角色的用戶授予訪問權限。如果需要多個角色,可以多次應用 Authorize 屬性,也可以編寫自己的篩選器。
[Authorize(Roles="admin, system"]publicclassBackofficeController : Controller{ ...}
Authorize 屬性還可以視需要通過 ActiveAuthenticationSchemes 屬性ASPCMS批量助手,接受一個或多個身份驗證方案。
[Authorize(Roles="admin, system"ASPCMS批量更新文章, ActiveAuthenticationSchemes="Cookie"]publicclassBackofficeController : Controller{ ...}
ActiveAuthenticationSchemes 屬性是逗號分隔字符串,用于列出授權層將在當前上下文中信任的身份驗證中間件組件。也就是說,它聲明僅當用戶通過 Cookie 方案進行身份驗證并具有任一所列角色時,才允許訪問 BackofficeController 類。如前所述,傳遞到 ActiveAuthenticationSchemes 屬性的字符串值必須與應用程序啟動時注冊的身份驗證中間件一致。
請注意,在 ASP.NET 2.0 中ASPCMS批量添加產品,身份驗證中間件被替換為包含多個處理程序的服務。因此,身份驗證方案是選擇處理程序的標簽。
若要詳細了解 ASP.NET Core 中的身份驗證,建議參閱我在 2017 年 9 月發表的專欄文章“ASP.NET Core 中的 Cookie、聲明和身份驗證”(msdn.com/magazine/mt842501)。
授權篩選器
系統提供的授權篩選器使用 Authorize 屬性提供的信息。此篩選器先于其他任何 ASP.NET Core 篩選器運行,因為它負責檢查用戶能否執行請求的操作ASPCMS批量添加欄目。如果用戶未經授權,篩選器會簡化管道,并取消請求。
可以創建自定義授權篩選器,但大部分情況下無需這樣做。實際上,最好配置默認篩選器依賴的現有授權層。
角色、權限和否決
借助角色,可以根據用戶能夠執行或不能執行的操作,對應用程序用戶輕松進行分組。不過,這種方法不是非常容易表達;至少,還不足以滿足大部分新式應用程序的需求。
例如,假設為相對簡單的授權體系結構,可以服務于網站的普通用戶,以及獲得授權可訪問后端辦公系統軟件并更新內容的 Power User。基于角色的授權層可以圍繞兩個角色(即用戶和管理員)進行構建,這些角色定義了每組可以訪問的控制器和方法。
涉及否決方面的細微區別時,就會遇到問題,因為這些區別描述了具有給定角色的用戶能夠執行或不能執行的操作。
例如,可能有用戶喜歡訪問后端辦公系統。但在這些用戶中,有的獲得授權只能編輯客戶數據,有的獲得授權只能處理內容,還有的獲得授權既能編輯客戶數據,也能處理內容(見圖 1)。
圖 1:角色層次結構
角色實質上是一種平面概念。如何平展圖 1 中所示的簡單層次結構?可以創建四個不同的角色(即 User、Admin、CustomerAdmin 和 ContentsAdmin),但只要否決數量變多,所需的角色數量就會大大增加。即使像這樣的簡單練習,也表明角色可能并不是處理授權的最有效方法(優先考慮向后兼容性的簡單方案和實例除外)。對于其他所有情況,要求則不同。下面開始介紹基于策略的授權。
文章地址:http://www.meyanliao.com/article/other/Authorizesxtgsmdfsbhkzqhqbfff.html