我正在使用自定义代码在我的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来检查配置文件是否已重置,但它仍然具有登录用户的所有值。那么,我该怎么做才能重置配置文件并注销用户???
答案 0 :(得分:2)
在SignOut()之后立即停止重定向,所以页面停止更新任何其他内容。
所以代码将是。
protected void lnkBtnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Request.Cookies.Clear();
FormsAuthentication.SignOut();
Response.Redirect("/Default.aspx", true);
}
重定向后检查用户是否仍然登录。用户在调用SignOut后没有注销,但是在最终cookie的结束和刷新之后,以及在下一页加载时。