2017-04-15 58 views
1

我想在我的ASP.NET Webforms應用程序(不使用MVC)中添加可由管理員用戶配置的可配置用戶權限模塊。我的用戶數據庫模式如下所示 enter image description hereASP.NET Webforms中的自定義角色和權限

我希望管理員用戶創建角色(UserGroup),爲組分配權限並使用它所屬的組創建用戶。到目前爲止,我可以自己做,但我的問題是一旦創建用戶,實現權限的最佳方法是什麼。更具體地說,我的主頁上有菜單,其中包含EntityName,它具有查看,添加,編輯,刪除子菜單。例如*客戶

  • 查看
  • 添加
  • 編輯
  • 刪除

我想根據用戶的許可的情況下啓用/禁用菜單/子菜單誰已登錄。我還希望限制用戶嘗試通過直接輸入他沒有權限的網頁的網址進行導航。

我想指出,用戶(管理員)應該能夠創建一個角色,所以沒有硬編碼的角色名稱等在網絡配置文件。

編輯: - 有一個existing question,但這並不回答如何限制用戶嘗試導航到一個頁面,通過鍵入他沒有訪問權限的網址。

+0

同樣的問題被問我使用不正確的ID,我刪除了這個問題,並用我的正確配置文件問這個問題。所以你所指的問題不存在。 – KMan

回答

0
protected void Page_Load(object sender, EventArgs e) 
    { 
     // Perform The UI Logic 
     // Assuming That You Are Tracking The User For Each Reqeust In Session["UserID"] 
     ShowHideMenuOrSubMenu_Role_Your_RoleName(Session["UserID"].ToString()); 
    } 
    public static void ShowHideMenuOrSubMenu_Role_Your_CRUD_RoleName(string UserID) 
    { 
     if (CheckUserRole("Your_CRUD_Role", UserID)) 
     { 
      //1. Set Your Front End WebForm Control To Disable 
      //2. Set Your Front End WebForm Control CSS 
      // Whichever you prefer . 
     } 
    } 
    public static bool CheckUserRole(string Role_CRUD , string UserID) 
    { 

     // Go Into DB/Repository/EF Where Your Role/User Setting Is Set . 
     // Perform Checking 
     // Assuming The Result Is A Bool Checking Result That You Checked 
     return Result; 
    } 
+0

建議的代碼基於假設您未使用.net標識,因此您可能需要在每次用戶請求頁面時查詢和檢查(這很糟糕 - 通過執行額外的算法來增加服務器負載)。再加上最好的方法是將靜態算法分解出來,並將其放在其他地方,而不是放在頁面實例級別。 –