2017-10-12 97 views
-2
  1. 我有8個按鍵,每一個執行不同的任務,即,編輯,刪除,創建等,以及上下文菜單對每個任務的啓用/經由功能/方法禁用按鈕(C#)

  2. 我的表稱爲審覈的在DB,其中包括布爾變量的,即groupTitle,canEdit,canDelete,canCreate ..... groupTitle是字符串不是bool的

  3. 我有一個布爾函數canDoIt(任務,用戶標識)來檢查登錄用戶(它將具有特定groupTitle),可以執行或不能(函數返回true或false所提供的任務,在短)

假設,我想檢查是否已登錄的用戶可以執行任務或不正確,通過canDoit檢查(任務,用戶標識符),如果他不能,該按鈕將被禁用,否則將不會...... OnForm_Load我拋出函數(或可能是另一次我需要它時)並檢查每個按鈕,即

btnEdit.Enabled = canDo("canEdit", userID) 
btnDelete.Enabled = canDo("canDelete", userID) 
btnCreate.Enabled = canDo("canCreat", userID) 

cnxMenuEdit.Enabled = canDo("canEdit", userID) 
cnxMenuDelete.Enabled = canDo("canDelete", userID) 
. 
. 
. 
.....and so on and so forth. 

我的方法做工精細和良好的,但我有疑惑和問題....

第一個問題,很好嗎? 第二個問題,它是專業? 另一個是,會影響程序或數據庫的性能嗎?

很抱歉,如果同一已經要求/貼.....

+3

[代碼審查](https://codereview.stackexchange.com/)。 – Sinatr

+0

@Sinatr我不同意。該代碼不完整,需要審查,OP正在質疑整體方法,這是適合SO的。 – DonBoitnott

+0

@DonBoitnott,*「很好?」*,*「是否專業?」*聽起來「我不喜歡它」,即「請codereview人」。他們有他們的規則,因爲它不符合我的同意。 – Sinatr

回答

0

你需要保持你的記錄在內存用戶的訪問權限。 創建一個包含訪問權限列表的用戶模型,在用戶登錄時將其加載到某個靜態對象,然後在需要時檢查訪問權限。

類似的東西

public class UserModel 
{ 
    public List<UserAccessRight> AccessRights {get; set;} 
} 

public class UserAccessRight 
{ 
    public string Name {get; set;} 
} 

public static class SomeAuthHelperClass 
{ 
    public UserModel CurrentUser {get; set;} 

    // some helper methods to retrieve data etc. 

    public static CanDo(string accessRight) 
    { 
     return CurrentUser.AccessRights.Contains(ar => ar.Name.Equals(accessRight); 
    } 
} 
..... 

btnEdit.Enabled = SomeAuthHelperClass.CanDo("EditSomething");