我有8个按钮,每个按钮执行不同的任务,即编辑,删除,创建等,以及每个任务的上下文菜单
我在DB中有一个名为 Moderations 的表,它由bool组成,即groupTitle,canEdit,canDelete,canCreate ..... groupTitle是string not bool
< / LI>我有一个bool函数 canDoIt(task,userid)来检查登录用户(具有特定的groupTitle),是否可以执行或不能(函数返回true或者提供的任务为false,简而言之)
假设,我想检查登录用户是否可以执行任务,通过canDoit(任务,用户ID)检查,如果他不能,则按钮将被禁用,否则将不会.... 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.
我的方法工作得很好但是我有疑问和问题......
第一个问题,这样好吗? 第二个问题,它是否专业? 另一个是,会影响程序或数据库的性能吗?
很抱歉,如果已经询问/发布了.....
答案 0 :(得分: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");