首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录用户信息

登录用户信息
EN

Stack Overflow用户
提问于 2020-12-15 07:21:52
回答 1查看 193关注 0票数 0

到目前为止,这是我的代码:

代码语言:javascript
复制
private void loginbtn_Click(object sender, EventArgs e)
    {
        CRUD.cmd = new NpgsqlCommand("SELECT COUNT(*) FROM users WHERE username = '" + txtuser.Text + "' AND password = '" + txtpass.Text + "'", CRUD.con);
        NpgsqlDataAdapter da = new NpgsqlDataAdapter();
        DataTable dt = new DataTable();
        da.SelectCommand = CRUD.cmd;
        da.Fill(dt);

        if (dt.Rows[0][0].ToString() == "1")
        {
            Welcome welcome = new Welcome();
            welcome.Show();

            this.Hide();
        }
        else
        {
            MessageBox.Show("Username or password incorrect, try again.",
                "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            txtpass.Clear();
            txtuser.Clear();
            txtuser.Focus();

        }
        if (RememberMe.Checked)
        {
            Properties.Settings.Default.UserName = txtuser.Text;
            Properties.Settings.Default.Password = txtpass.Text;
            Properties.Settings.Default.Save();
        }
    }

我知道我应该使用SQL参数,但这是一个安全的本地环境。我的问题是,如何检索当前登录的哪个用户的信息?我需要它,所以当用户向SQL表插入方法时,我想知道是哪个用户做了这个条目,或者是哪个用户删除了它。还可以将用户信息与INSERT方法的其余部分一起添加到另外两个列(用户ID和PASS)。

编辑:

这里我有一个带有datagridview (DGV)的小窗口窗体应用程序和几个文本字段,可以用一个按钮将值插入到表中,然后将该信息显示给DGV,并具有删除行的能力。我制作了Form2,所以用户必须在访问Form1 (DGV )之前登录。我所要做的就是以某种方式保存用户信息,每当他更改DGV时,将他的凭据添加到表中他所做条目旁边的两个额外列中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 15:53:48

知道谁登录了

是谁登录到windows机器?

如果你指的是谁登录到例如。在Windows机器上,您可以使用类似于Environment.UserName的东西。

自定义解决方案/数据库

如果您自己的解决方案/数据库要“登录”,则需要添加此功能。它通常是在自己的服务器上使用著名的库完成的,而不是“手工编写的”,但是对于测试项目的粗糙/不安全的示例,您可以使用Properties.Settings,例如:

代码语言:javascript
复制
/* "Logging in" */
if (password == databaseUser.Password) {
    Properties.Settings.Default.myLoggedInUserId = databaseUser.Id;
    Properties.Settings.Default.myLoggedInUserName = databaseUser.Name;
}

/* "Logging out" */
Properties.Settings.Default.myLoggedInUserId = null;
Properties.Settings.Default.myLoggedInUserName = null;

哪个用户创建/编辑了一行

这通常是通过向表中添加附加字段来实现的,例如。CreatedDateCreatedBy

代码语言:javascript
复制
var sqlText = "INSERT INTO MyTableName(Name, CreationDate, CreatedBy) VALUES (@Name, @CreatedDate, @CreatedBy);";
var command = new SqlCommand(sqlText, connection);

command.Parameters.Add("@Name", name);
command.Parameters.Add("@CreatedDate", DateTime.UtcNow);
command.Parameters.Add("@CreatedBy", myLoggedInUserName);

对于谁编辑了一行,请考虑“修改日期”和“被修改”列。

谁删除了一排

要做到这一点,可以采取以下办法:

在操作成功后,

  • 手动将INSERT插入另一个表(听起来您已经做到了)

从用户中删除UserId = @UserId;插入MyLoggingTable(LogMessage,LoggedInUserId)值(@Message,LoggedInUserId)

  • 在与上面提到的“修改日期”/“被修改的日期”列组合时,使用“软删除”来删除属性,而不是通过设置SQL DELETE删除,例如users.Active

-列出所有活动用户选择*来自users.Active =1的用户;-删除设置为active =0的用户更新用户设置为UserId = @UserId;-谁删除了用户(假设您无法编辑已删除的用户)从users.UserId = @Id;的用户中选择users.ModifiedBy

  • 类似于上面的部分,但添加了“已删除日期”和“已删除的日期”列(如果仍然可以修改“非活动”的内容,则可能需要)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65301570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档