0

我正在尝试编写一个基于ASP.Net. 当我使用用户名密码创建登录页面,并连接到SQL-server.

但是当我输入正确的用户名和密码时。它需要点击登录两次才能登录。登录后,当我返回登录页面时。无论我试图在用户名和密码文本框中输入什么。系统会一直让我登录。听说session可以帮忙,但不知道怎么用。

有没有人可以帮助我?或者请给我一些可用的代码示例?

谢谢

吉米

4

4 回答 4

1

我支持@GojiraDeMonstah 的建议,并且还建议您尽可能使用Microsoft 的开箱即用(OOTB)功能来处理网站安全(即身份验证、授权、用户管理、密码重置等)。当一切都为您服务时,没有理由去重新发明轮子。您甚至可以扩展现有功能来创建您自己的自定义身份验证提供程序,但您确实希望避免尝试从头开始编写一个,特别是如果您不熟悉这些东西。

Microsoft 提供了无数的工具和教程,让您可以轻松设置所有这些东西。不要尝试创建自己的数据库,除非你真的真的必须这样做。只需使用他们为您提供的那个,并以此为起点。

是另一个很棒的资源,它提供了一个更直观的教程,向您展示它是多么容易。

祝你好运!

于 2013-03-08T17:05:01.863 回答
0

像这样写代码

FirstPage.aspx(在您的第一页登录按钮单击)

protected void Login_Click(object sender, EventArgs e)
{
    Session["UserName"] = txtUserName.Text;//Store username in session
}

SecondPage.aspx(在下一页登录后)

protected void Page_Load(object sender, EventArgs e)
{
    LabelUserName.Text = Session["UserName"].ToString();//Show username on a label
}

希望能帮助到你 ....

于 2013-03-08T18:27:50.253 回答
0

提供用户名和密码(凭据)然后使用提供的名称和密码来验证用户的过程称为身份验证。如果您使用 google asp.net 身份验证,您将获得数不胜数的结果。这是一个好的开始 --> http://support.microsoft.com/kb/301240

于 2013-03-08T16:37:06.803 回答
0

我发现最简单的方法是在此处下载此示例中提供的示例页面。

使用Global.asac文件,这样您就不必向应用程序中的每个页面添加登录代码。

在文件“Global.asax”中,在函数“Session_Start()”中定义您的会话

protected void Session_Start(Object sender, EventArgs e)
{
     //The first Session "Logged" which is an indicator to the
     //status of the user
     Session["Logged"]="No";
     //The second Session "User" stores the name of the current user
     Session["User"]="";

     //The third Session "URL" stores the URL of the
     //requested WebForm before Logging In
     Session["URL"]="Default.aspx";
}

在每个页面中,您只需要经过身份验证的访问来检查用户是否被记录,如下所示:

private void Page_Load(object sender, System.EventArgs e)
{
    if(Session["Logged"].Equals("No"))
    {
         ....
    }
    else
    {
         ....
    }
}

在您的Login.aspx页面中,使用如下函数检查数据库中的用户名和密码:

if(CheckUser(UserNametxt.Text.Trim()) && CheckPassword(Passwordtxt.Text.Trim())
{
    ....
}

else
{
    ....
}

在您的代码隐藏中,通过连接到您的数据库并从登录页面传递变量来定义函数 CheckUser() 和 CheckPassword()。

在此处下载示例文件。

于 2018-11-04T19:52:34.040 回答