3

我正在使用自定义代码在我的 Web 应用程序中登录和注销用户。单击登录按钮后,将执行以下代码:

if (Membership.ValidateUser(txtUserEmail.Text, txtUserPass.Text))
{
    HttpContext.Current.Profile.Initialize(txtUserEmail.Text.Trim(), true);
}

然后,我在每个页面的 pre-init 上检查 profile.Username 以检查用户是否已登录。但是现在我不知道该怎么做才能注销用户,以便将配置文件设置为 null 什么的。我正在单击注销按钮尝试所有这些:

protected void lnkBtnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Request.Cookies.Clear();
FormsAuthentication.SignOut();
var p = HttpContext.Current.Profile;
Response.Redirect("/Default.aspx");
}

我使用变量 p 只是为了检查配置文件是否已重置,但它仍然具有登录用户的所有值。那么,我应该怎么做才能重置配置文件并注销用户???

4

1 回答 1

2

在 SignOut() 之后立即停止其他任何内容进行重定向,因此页面停止更新其他任何内容。

所以代码将是。

protected void lnkBtnLogout_Click(object sender, EventArgs e)
{
  Session.Abandon();
  Request.Cookies.Clear();
  FormsAuthentication.SignOut();
  Response.Redirect("/Default.aspx", true);
}

重定向后检查用户是否仍在登录。用户不是在调用 SignOut 后注销,而是在结束和刷新最终 cookie 后,并在下一页加载。

于 2012-03-08T21:53:44.033 回答