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

相關問題