【问题标题】:Storing/accessing user access roles C# Winforms存储/访问用户访问角色 C# Winforms
【发布时间】: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


    【解决方案1】:

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

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

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

    您应该能够读取该值并将其分配给声明为的字段:

    ROLES userRoles = GetRoleValueFromDB();
    

    我很确定我以前做过。

    HTH...

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多