我设计了多个客户端/服务器应用程序。我正在开发一个涉及用户登录以访问应用程序的项目。我正在研究一种登录到应用程序时存储用户权限的最有效和“简单”的方法,该应用程序可以在整个主窗体上限制对某些选项卡的访问。
我创建了一个名为“用户”静态类具体如下:存储/访问用户访问角色C#Winforms
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块来查看表单上的相关选项卡,主窗体被实例化。我可以存储用户ID和用户名变量中的主要形式,一旦它加载由例如说的手段:
在这里,我们处理来自用户的登录数据:
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块访问它们?