在asp.net中创建我们自己的登录功能,而不使用ASP.NET的默认logincontrol

时间:2011-01-20 15:37:40

标签: asp.net vb.net visual-studio-2008 visual-studio-2005

如何创建登录,注册和用户登录后,登录的用户名将在每个页面中显示,使用Label而不使用登录控制并创建用户向导

我在My Table1中有以下字段

ID        Username        Email id         Password
1         dobriyal        dd@d.com         ssssss
2         manish          tt@d.com         ttreter

我想在sumit.aspx页面使用Textbox1和textbox2和按钮创建登录...当用户使用textbox1中的emailid和textbox2中的密码时,如果userfind在数据库中根据在textbox1和textbox2中输入的emailid和密码。 ..然后登录的用户名将显示在每个页面的label1中...其中我在页面上有标签1 ///

表示....如果我在Default.aspx上有label1,myname.aspx,defaul2.aspx然后在每个页面中,label1文本将被记录在用户名.....直到他们登录其会话...

如何使用Vb.NET

请记住我不想使用默认登录& createuserwizard,ASp.NET的登录状态和登录名控制......

1 个答案:

答案 0 :(得分:1)

你的问题答案非常广泛。所以代替代码,我给你的算法。

<强> 1。创建一个方法,检查数据层文件中提供的用户名和密码。 例如。 bool IsAuthenticatedUser()。在此方法内部运行Command.ExecuteScalar。这是查询“

Declare @Count =(Select Count(*) From Login 
                Where UserName = @UserNAme and Password = @Password)
               Select @Count;  

- 假设您正在使用Sql Server 2008

<强> 2。现在,在IsAuthenticated方法中检查返回的值是否为1,然后返回true,否则返回false。像这样的东西

int count = (int)command.ExecuteScalar();
If (count ==1)
{
  return true;
}
return false;

第3。在UI上检查方法返回的值。如果真的将用户重定向到其页面。并设置会话。用于在页面上显示姓名电子邮件ID, 在IsAuthenticated方法成功之后,创建另一个方法,从数据库中选择所需的实体并将其填入数据表中。 像这样的东西

If(IsAuthenticatedUser(username, password))
  {
     Datatable dt = GetUserDetails(username,password);
     If(dt!=null)
     {
         if(dt.rows.count >0)
          {
               // here there is only one row so you can use index [0] also
               foreach(DataRow dr in dt.rows)
               {
                   Session["UserName"] = dr["UserName"].tostring();
                   Session["Email"] = dr["Email"].tostring();
               }
          }
     } 

现在在所需的页面上检查两个会话是否都为空,然后将值设置为所需的标签。

If (Session["UserName"]!=null && Session["Email"]!=null)
{
   lblUserName.Text = "Welcome " + Session["UserName"].ToString();
   lblEmail.Text = Session["Email"].tostring();
}

**这里的userName和password参数将是从文本框传递的值。

string username = txtUserName.text.trim();
string password = txtPassword.text.trim();

您也可以在接受用户输入之前进行验证,因为这可能会导致sql注入并暴露整个数据库。但出于家庭目的,你可以这样做。**

请参阅更新:

  1. 在每个页面上显示名称创建母版页并在其上添加两个标签。要添加母版页,请从上下文菜单添加新项 - &gt;母版。现在在源视图中根据需要添加表。还有ContentPlaceholder,不要在该标签内添加。这是显示其他子页面的空间。在主页面加载事件中使用label =会话代码来设置名称。还有一个链接按钮,在其点击事件中使用

    Session.Abandon();

    的Response.Redirect( “〜/注销的Login.aspx = 1?”);

    - &GT; 我添加了一个新东西?Logout称为查询字符串,用于将值从一个页面传递到另一个页面。在这里,我使用Login = 1,这意味着我可以在登录页面上知道,因为我自己退出了。