存储/访问用户访问角色C#Winforms

存储/访问用户访问角色C#Winforms,c#,winforms,authentication,roles,C#,Winforms,Authentication,Roles,我设计了几个客户机/服务器应用程序。我正在从事一个项目,该项目涉及用户登录以获得对应用程序的访问权。我正在寻找一种最有效、最“简单”的方法来存储用户登录到应用程序后的权限,这种方法可用于限制对主窗体上某些选项卡的访问。 我创建了一个名为“User”的静态类,详情如下: static class User { public static int _userID; public static string _moduleName; public static string

我设计了几个客户机/服务器应用程序。我正在从事一个项目,该项目涉及用户登录以获得对应用程序的访问权。我正在寻找一种最有效、最“简单”的方法来存储用户登录到应用程序后的权限,这种方法可用于限制对主窗体上某些选项卡的访问。
我创建了一个名为“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对象存储在内存中,以便控制他们可以访问主窗体选项卡控件上的哪些选项卡,例如;如果用户在数据库中被分配了以下角色:“销售分类账”、“采购分类账”,则在登录表单被隐藏且主表单被实例化后,他们只能通过使用开关盒块来查看表单上的相关选项卡。加载后,我可以在主窗体中存储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;
    }
DataAccess\u dal=newdataaccess();
开关(_dal.ValidateLogin(txtserName.Text,txtPassword.Text))
{
案例DataAccess.ValidationCode.ConnectionFailed:
Show(“数据库服务器连接失败!”);
打破
案例DataAccess.ValidationCode.Login失败:
MessageBox.Show(“登录失败!”);
_dal.RecordLogin(out errMsg,txtUserName.Text,workstationID,false);
打破
案例DataAccess.ValidationCode.LoginSAccessed:
frmMain frmMain=新frmMain();
_dal.GetUserPrivList(out errMsg,2);//<在这里,我访问我的数据库并根据当前登录获取用户权限。
frmMain.Show();
this.Hide();
打破
违约:
打破
}
私有void frmMain_加载(对象发送方,事件参数e)
{
int UserID=User.\u UserID;
}

这很好,但是_modules对象包含多个权限/角色,具体取决于数据库中设置的内容,如何存储多个值并通过开关盒块访问它们?

如果我理解正确,您希望能够将权限/角色作为每个用户的值存储在数据库中

我相信您可以将整数写入数据库字段,如:
RolesID
。向数据库字段写入标志的值。比如:

[Flag]
public enum ROLES
{
    Administrator = 1,
    User = 2,
    OtherRole3 = 4,
    OtherRole4 = 8
}
您应该能够在中读取该值并将其分配给声明为:

ROLES userRoles = GetRoleValueFromDB();
我很肯定我以前做过