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

ASP.NET 授權機制詳解 (上):角色授權、URL 授權與權限對應

     編輯:關於ASP.NET

ASP.NET 授權決定「誰能存取什麼資源」。本文涵蓋角色基礎授權 (RBAC)、URL 授權設定、檔案授權與 NTFS ACL 對應、Permission 物件模型 (代碼存取安全 CAS) 基礎。

角色基礎授權 (RBAC)

  • 定義角色 (Admin、Editor、Viewer) → 指派使用者至角色 → 為角色授予權限。
  • 優點:使用者異動只需調整角色隸屬,權限設定集中管理。
  • IPrincipal.IsInRole(role) 為核心檢查方法。

URL 授權 (UrlAuthorizationModule)

在 web.config 以 <authorization> 區段宣告規則:


<configuration>
  <location path="Admin">
    <system.web>
      <authorization>
        <allow roles="Admin" />
        <deny users="*" /> <!-- 拒絕所有其他 -->
      </authorization>
    </system.web>
  </location>
</configuration>
  • allow / deny 屬性:users (逗號分隔、? 匿名、* 所有)、roles、verbs (GET/POST)。
  • 規則由上往下,首個匹配生效;無匹配預設允許。
  • 可巢狀 <location> 針對特定目錄/檔案設定不同規則。

檔案授權 (FileAuthorizationModule)

  • 僅在 <authentication mode="Windows"> 生效。
  • 模組檢查要求檔案 (.aspx、.asmx 等) 的 NTFS ACL,確認 Context.User.Identity (WindowsIdentity) 是否有讀取/執行權限。
  • 適合企業內部網站,直接利用 AD 群組與資料夾權限管理。

權限對應:Permission 物件與 CAS

.NET 將作業系統資源權限 (檔案、登錄、網路、UI 等) 封裝為 CodeAccessPermission 衍生類別:

Permission 類別保護資源典型用法
FileIOPermission檔案系統讀寫要求讀取特定目錄
RegistryPermission登錄存取讀寫特定機碼
WebPermission網路連線連接特定 URI
SqlClientPermissionSQL Server 連線資料庫操作
SecurityPermission非受控碼、執行緒、主體操作高信任度操作

聲明式 vs 命令式安全


// 聲明式:屬性標註在類別/方法上,載入時檢查
[FileIOPermission(SecurityAction.Demand, Read = @"C:\Data\")]
public class DataService { ... }

// 命令式:程式碼中明確檢查
var perm = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\Data\");
perm.Demand(); // 若無權限拋出 SecurityException

下篇預告

下篇將實戰示範:自訂授權模組、資料列級權限過濾、動態權限載入與快取策略。

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