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

时间:2009-12-01 22:14:01

标签: c# winforms authentication roles

我设计了几个客户端/服务器应用程序。我正在开发一个涉及用户登录以访问应用程序的项目。我正在查看登录到应用程序后存储用户权限的最有效和“简单”方法,该方法可用于限制对主表单上某些选项卡的访问。
我创建了一个名为“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块访问它们?

1 个答案:

答案 0 :(得分:0)

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

我相信你可以写一个整数到数据库字段,如:RolesID。写入数据库字段的标志值。类似的东西:

[Flag]
public enum ROLES
{
    Administrator = 1,
    User = 2,
    OtherRole3 = 4,
    OtherRole4 = 8
}

您应该能够读取该值并分配给声明为:

的字段
ROLES userRoles = GetRoleValueFromDB();

我很确定我以前做过这个。

... HTH