关于我使用asp.net和C#创建的登录页面

本文关键字:创建 登录 于我使 asp net | 更新日期: 2023-09-27 18:23:49

我为我的班级项目创建了一个网站,但我很难创建登录名。我使用参数将数据插入数据库。我在c#中做这件事,我的数据库在sql server中。

我首先创建登录过程:

 ALTER PROC [dbo].[uselogin]
    @userNickName nvarchar(50),
    @userPassword nchar(10)
  As 
    SELECT [userId]
      ,[userFirstName]
      ,[userLastName]
      ,[userNickName]
      ,[userPassword]
      ,[userStreetAddress]
      ,[userEmail]
  FROM [dbo].[User_T]
  WHERE userNickName=@userNickName AND userPassword=@userPassword

然后在登录页面中,我创建了登录文本框和登录按钮,如下所示:

  <asp:Label ID="Label3" runat="server" Text="Username: "></asp:Label>
<asp:TextBox ID="txtuserName" runat="server" CssClass="form-control "></asp:TextBox> 
<asp:Label ID="Label4" runat="server" Text="Password: "></asp:Label>
<asp:TextBox ID="txtPassword" runat="server" CssClass="form-control "></asp:TextBox>
<asp:Button ID="btnLogIn" runat="server" Text="Log In " onClick="button_login_Click" CssClass="btn btn-primary btn-block" />
      

aspx页面后面的代码

protected void button_login_Click(object sender, EventArgs e)
    {
        string userName = txtuserName.Text;
        string userPassoword = txtPassword.Text;
        User user = new User(userName, userPassoword);
        cc.userLogin(user);
    }

这是我的C#代码和我使用的所有类:

Class User{
string name;
string userName;
string usePass;
.........
.....
public User(string un, string pass)
{
 this.UserNickName = un;
 this. UserPass = pass;
}
 // create getter and setter to each one. 
 public UserNickName
  {
     get{return userName; } 
     set{ userName = value;}
  }
 // the same for all my getter and setter. 

}这是另一个称为处理程序的类

public handler{ // has object from DBManager.cs
DBManager db; 
public void userLogin(User u){ db.userLogin(u);}}

我的最后一堂课是数据库管理员

public DBManager{
 // constructor has the database connection and my login method
  public void userLogin(User user)
    {
        SqlCommand cmd = new SqlCommand("uselogin",_conn);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlParameter p1 = new SqlParameter("userNickName",     user.UserNickName);
        SqlParameter p2 = new SqlParameter("userPassword", user.UserPassword);
        cmd.Parameters.Add(p1);
        cmd.Parameters.Add(p2);
        _conn.Open();
        SqlDataReader rd = cmd.ExecuteReader();
        if (rd.HasRows)
        {
            rd.Read();
            HttpContext.Current.Response.Redirect("PublishingAnEvent.aspx", true);
        }
        else
        {
          //  Label5.Text = "do it agin";
            HttpContext.Current.Response.Redirect("RegestrationPage.aspx", true);
        }

}

我希望你能给我答案。我读了很多书,但什么都找不到。。。。感谢大家。

关于我使用asp.net和C#创建的登录页面

如果不为您做功课,我确实有以下见解:

  1. 您应该始终使用"所有者"作为存储过程名称的一部分
  2. 您应该始终在任何实现IDisposable的对象上使用using块(请参阅下面的示例)。这有助于轻松正确地处理它们
  3. 我没有在构造函数中实例化连接,而是选择了使用方法的模式。该方法将实例化并打开SqlConnection对象,它将处理所有错误
  4. 我将参数创建更改为使用更简单的方法
  5. 我去掉了rd.Read()行,因为它似乎没有任何作用

示例:

    public DBManager
    {
        public void userLogin(User user)
        {
            using (SqlConnection _conn = GetConnection())
            {
                using (SqlCommand cmd = new SqlCommand("dbo.uselogin",_conn))
                {
                   cmd.CommandType = CommandType.StoredProcedure;
                   cmd.Parameters.AddWithValue("@userNickName", user.UserNickName);
                   cmd.Parameters.AddWithValue("@userPassword", user.UserPassword);
                   using (SqlDataReader rd = cmd.ExecuteReader())
                   {
                       if (rd.HasRows)
                       {
                           HttpContext.Current.Response.Redirect("PublishingAnEvent.aspx", true);
                       }
                       else
                       {
                           //. Label5.Text = "do it again";
                           HttpContext.Current.Response.Redirect("RegistrationPage.aspx", true);
                       }
                   }
               }
            }
        }
    }