从用户名和密码条目中获取主键

问题描述 投票:1回答:2

我有一个由id用户名和密码组成的表。我目前有一个wpf表单,它要求用户输入用户名和密码,如果它们存在于表中,则该人员可以登录。登录后,它会引导他们到另一个表格和表格,他们可以在其中添加数据。

我的问题是如何获取所使用的登录信息的pk并将其添加到下一个表单的表中?

编辑:在第二个表上我已经有一个专用于用户名和密码表的编辑列Edit2:

存储登录信息的表如下

ID - username - password
1   - ish - 1234
2  - tom - abc
3  - jeff - qwerty
etc

我想通过两本教科书登录时能够检索id

例如,如果我键入“tom”然后键入“abc”我应该能够id为2

c# sql-server wpf foreign-keys primary-key
2个回答
0
投票

那么你得到他们登录的id并将其传递给另一个表单:

using(Sqlconnection con = new SqlConnection(constr))
{
     using(SqlCommand cmd = new SqlCommand("select id from Users where username = @username and password = @password", con)
     {
          cmd.Paramters.Add("@username", SqlDbType.VarChar).Value = username;
          cmd.Paramters.Add("@password", SqlDbType.VarChar).Value = password;
          con.Open();
          string result = (string)cmd.ExecuteScalar();
          if(result!=null)
          {
              int id = int.Parse(result);
              SecondForm frm = new SecondForm();
              frm.UserId = id;
              frm.Show();
          }
          else
          {
              //tell the user that credentials are not valid
          }
     }
}

在你的第二种形式,你应该有一个属性,如:

public int UserId {get; set;} = 0;

0
投票

在这种情况下,最好编写一个带有用户名和密码的存储过程,如果有效,则返回主键-1。从代码中调用SP,如果返回值大于0,则它是主键。

如何将此ID传递给下一个表单取决于您使用的技术。它可以作为查询字符串传递,但不推荐,作为表单字段,会话变量等发布。

但是这个设计有很多改进的余地。但是最好遵循一些基本的东西

在第二个表中,存储第一个表的主键(id)的列应该是引用第一个表的主键的外键。从技术上讲,它不一定是外键,但它是最好的方法。

另一个建议是将密码存储为哈希而不是直接文本。盐的哈希更安全。

© www.soinside.com 2019 - 2024. All rights reserved.