3

我正在使用自定义代码在我的Web应用程序中登录和注销用户。在登录点击按钮,下面的代码执行:如何从我的asp.net应用程序注销用户?

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

我再检查everypage的预初始化的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只是为了检查是否配置文件已复位或不是,但它仍具有的所有值登录的用户。那么,我应该怎么做才能重置配置文件并注销用户?

+1

你在重定向后检查了吗? – Paul 2012-03-08 16:58:08

+0

是的,所有的配置文件值仍然保持原样,即使用当前的用户详细信息填充。 – MrClan 2012-03-08 17:00:15

+0

您可以添加“if(!IsPostBack)”来尝试吗? – 2012-03-08 18:32:43

回答

2

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

所以代码会。

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

重定向检查之后,如果使用仍登录,用户不SignOut的电话后注销,但最终和最终的cookie的冲洗后,并在接下来的页面加载。

+0

nopes,即使使用此代码,结果也是一样。用户被重定向到default.aspx页面,但他没有注销并且Profile对象仍然被填充,因此,如果他/他人 - 其他人向后导航,然后尝试使用该应用程序,则所有内部行为通常会因为它通常应该)与应用程序一样,用户仍然登录。 – MrClan 2012-03-10 04:00:02

+0

@PratikChandra检查您是否缓存页面! – Aristos 2012-03-10 08:59:35

+0

很确定,没有什么缓存! – MrClan 2012-03-10 16:50:51

相关问题