0

嘿,我正在创建一个论坛,用户可以在其中登录并在论坛中发布 ocmments,我希望将用户名作为会话变量,以便在他们发表评论并将用户名插入数据库时​​获取它,并显​​示用户好消息.

下面是我的登录代码:

protected void Button1_Click(object sender, EventArgs e)
{
    DataSet ds = new DataSet();
    localhost.Service1 myws = new localhost.Service1();
    ds = myws.GetUsers();
    foreach (DataRow row in ds.Tables[0].Rows)
        if (txtusername.Text == System.Convert.ToString(row["username"]) &&
        txtpassword.Text == System.Convert.ToString(row["password"]))
        {
            System.Web.Security.FormsAuthentication.RedirectFromLoginPage(txtusername.Text, false);
        }
        else
            Label3.Text = "Invalid Username/Password";
}

我在这里声明会话变量吗?

像:

Session["username"] = "username";

也不确定输入什么来从数据库中获取值用户名

谢谢

4

2 回答 2

0

您不需要使用会话。调用该FormsAuthentication.RedirectFromLoginPage方法后,在目标页面内,您可以使用此方法发出的身份验证 cookie 访问当前连接的用户User.Identity.Name

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        string username = User.Identity.Name;
        // ...
    }
}

要了解有关表单身份验证如何在 ASP.NET 中工作的更多信息,我邀请您阅读以下文章

于 2012-05-15T17:45:08.697 回答
0

您已经在使用FormsAuthentication.RedirectFromLoginPage(txtusername.Text, false)很棒的表单身份验证 ( )。User.Identity.Name因此,正如 Darin 所指出的,您不需要存储用户名是 session,因为它已经可以通过 获得 。

我写了两篇关于表单身份验证的教程,您可能会觉得有用:

此外,考虑使用会员资格。Membership 是 ASP.NET 中内置的一个子系统,它处理用户帐户并提供用于创建帐户、删除帐户等的 API。简而言之,您不必自己编写所有代码。使用登录 Web 控件,创建新帐户、登录用户、重置密码等都非常简单,涉及零到很少的代码。有关更多信息,请参阅我的会员教程

快乐编程!

于 2012-05-15T17:51:14.007 回答