嘿我正在创建一个论坛,用户可以在论坛中登录和发布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
获取值用户名的内容由于
答案 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。
快乐编程!