2017-10-12 151 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");