首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

角色型安全性程式設計入門:PrincipalPermission 驗證實作範例

     編輯:關於.NET

.NET 角色型安全性允許根據目前執行緒的主體身分進行授權。本文以最簡單的主控台程式示範宣告式與命令式的 PrincipalPermission 驗證。

基礎範例:未加驗證

static void Main() { OutHello(); Console.Read(); }
static void OutHello() { Console.WriteLine("hello world!"); }

宣告式驗證:要求 Administrators 角色

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void OutHello() { Console.WriteLine("hello world!"); }

在 Main 中將 Thread.CurrentPrincipal 設為匿名使用者 (WindowsIdentity.GetAnonymous()) 呼叫 OutHello,會拋出 SecurityException(圖 1-1)。改設為目前 Windows 使用者 (WindowsIdentity.GetCurrent()),若該用戶屬 Administrators 群組則通過(圖 1-2)。

圖 1-1 匿名主體驗證失敗

圖 1-2 Administrators 主體驗證通過

命令式驗證

static void OutHello() {
    new PrincipalPermission("", "Administrators").Demand();
    Console.WriteLine("hello world!");
}

自訂身分與角色

GenericIdentity identity = new GenericIdentity("xuanhun");
string[] roles = { "Administrators" };
GenericPrincipal principal = new GenericPrincipal(identity, roles);
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
new PrincipalPermission("xx", "Administrators").Demand(); // 身分不符,拋出異常(圖 1-3)

圖 1-3 自訂身分不符導致異常

此機制讓業務邏輯與身分驗證分離,支援 Windows、自訂或泛型主體,彈性極高。

作者:玄魂
出處:https://www.cnblogs.com/xuanhun/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved