用户名的会话变量

时间:2012-05-15 17:43:27

标签: asp.net

嘿我正在创建一个论坛,用户可以在论坛中登录和发布ocmments,我希望用户名作为会话变量,这样我就可以在发布评论并在db中插入用户名时获取它,同时也显示你好用户留言。

以下是我的登录代码:

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";

还不确定要从db

获取值用户名的内容

由于

2 个答案:

答案 0 :(得分:0)

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

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

要详细了解Forms身份验证在ASP.NET中的工作原理,我邀请您阅读following article

答案 1 :(得分:0)

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

我已经写了两篇关于表单身份验证的教程,你可能会发现它很有用:

此外,请考虑使用会员资格。成员资格是ASP.NET内置的子系统,用于处理用户帐户并提供用于创建帐户,删除帐户等的API。简而言之,您不必自己编写所有代码。使用登录Web控件,创建新帐户,签署用户,重置密码等等,都非常简单,并且涉及零到小代码。有关详细信息,请参阅我的Membership tutorials

快乐编程!