【发布时间】:2010-12-22 04:59:05
【问题描述】:
我设计了几个客户端/服务器应用程序。我正在从事一个涉及用户登录以访问应用程序的项目。我正在寻找登录到应用程序后存储用户权限的最有效和“简单”的方法,该方法可用于限制对主窗体上某些选项卡的访问。
我创建了一个名为“User”的静态类,详情如下:
static class User
{
public static int _userID;
public static string _moduleName;
public static string _userName;
public static object[] UserData(object[] _dataRow)
{
_userID = (int)_dataRow[0];
_userName = (string)_dataRow[1];
_moduleName = (string)_dataRow[2];
return _moduleName;
}
}
当用户登录并通过身份验证时,我希望将 _moduleName 对象存储在内存中,以便我可以控制他们可以访问主表单选项卡控件上的哪些选项卡,例如;如果用户已在数据库中分配了以下角色:“销售分类帐”、“采购分类帐”,他们只能通过使用 Switch - Case 块在登录表单被隐藏并且主窗体被实例化。一旦加载,我可以将 userID 和 userName 变量存储在主表单中,例如:
这里我们处理来自用户的登录数据:
DataAccess _dal = new DataAccess();
switch (_dal.ValidateLogin(txtUserName.Text, txtPassword.Text))
{
case DataAccess.ValidationCode.ConnectionFailed:
MessageBox.Show("Database Server Connection Failed!");
break;
case DataAccess.ValidationCode .LoginFailed:
MessageBox.Show("Login Failed!");
_dal.RecordLogin(out errMsg, txtUserName.Text, workstationID, false);
break;
case DataAccess.ValidationCode .LoginSucceeded:
frmMain frmMain = new frmMain();
_dal.GetUserPrivList(out errMsg,2); //< here I access my DB and get the user permissions based on the current login.
frmMain.Show();
this.Hide();
break;
default:
break;
}
private void frmMain_Load(object sender, EventArgs e)
{
int UserID = User._userID;
}
这很好,但是 _modules 对象包含多个权限/角色,具体取决于数据库中设置的内容,我如何存储多个值并通过 Switch-Case 块访问它们?
【问题讨论】:
标签: c# winforms authentication roles