首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForms 登錄界面權限控制的數據庫驅動實現

     編輯:程式設計綜合問答

核心思路

基於「用戶-角色-功能」的 RBAC 模型,將權限配置存儲於數據庫,登錄後動態加載並應用到界面控件。

數據庫設計示例

-- 用戶表
CREATE TABLE Users (UserID INT PK, Username VARCHAR(50), RoleID INT FK);

-- 功能/權限表
CREATE TABLE Functions (FuncID INT PK, FuncName VARCHAR(50), ControlTag VARCHAR(50));

-- 角色權限關聯表
CREATE TABLE RoleFunctions (RoleID INT FK, FuncID INT FK);

實現步驟

  1. 用戶登錄驗證通過後,查詢該用戶角色擁有的 FuncID 集合。
  2. 遍歷窗體所有控件(或特定容器),根據控件的 Tag 屬性匹配 ControlTag。
  3. 若控件對應功能不在權限集合中,設置 control.Enabled = false 或 control.Visible = false。

代碼片段

private void ApplyPermissions(int userId) {
    var allowedTags = db.GetAllowedControlTags(userId); // 返回 List
    foreach (Control ctrl in this.Controls) {
        if (ctrl.Tag != null && !allowedTags.Contains(ctrl.Tag.ToString())) {
            ctrl.Enabled = false;
        }
    }
}

擴展建議

可進一步封裝為權限管理組件,支持菜單、按鈕、列表列等不同粒度的控制;結合緩存減少數據庫查詢壓力。

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