2011-08-29 131 views
1

當我註銷Page.User.Identity.Name的值時,仍然包含用戶名,而不是將空字符串放在那裏。 有人知道爲什麼嗎? 我與Visual Studio 2010的工作,C#爲什麼在註銷時page.user.identity.name不是「」

+6

您的註銷代碼是什麼樣的? – JConstantine

+0

我使用的asp.net網站(不是空的網站),其中包含自動登錄(沒有代碼在c#登出,因爲我看到) – ves

+0

如果它是setable,然後繼續設置它與登出事件中的'String.Empty'。 – Tarik

回答

1

旁邊什麼身份的名稱包含,我想你應該更關心的是:

if (User.Identity.IsAuthenticated) 
{ 
    // Current user is Authenticated 
} 
else 
{ 
    // Current user is NOT Authenticated 
} 
+0

謝謝,我試過了。但是,當我註銷User.Identity.IsAuthenticated仍然是真實的(意味着我仍然登錄)。你知道我是否可以控制登出代碼(我沒有找到它的服務器事件) – ves

+0

只是當我關閉瀏覽器的狀態更新到正確的一個 – ves

0

我有過類似的問題給你。我做了一些研究,聽起來好像它可能與頁面緩存有關。

我的解決方法此問題是重定向到另一個頁面(即登錄或主頁)。

希望有所幫助。

+0

這是從我的主人:LogoutAction =「重定向」LogoutText =「註銷」LogoutPageUrl =「〜/」,我需要改變什麼? – ves

1

如果您使用模板創建網站,那麼您可能使用表單身份驗證。

當你點擊退出後,你需要火裏面

FormsAuthentication.SignOut();

這應該刪除與該用戶的所有必需的會話/餅乾具有這種代碼的事件。

0

您是否正在查看與註銷時相同的請求中的值?如果是這樣,那麼名稱將在那裏,因爲用戶仍然對該請求進行身份驗證(身份驗證在ASP.NET中很早發生)。在下一個請求中,您應該看到用戶不再通過身份驗證(您正在查找的值將是空的string)。相反,當你第一次認證一個用戶時,你會看到當前的請求沒有被認證,但是在隨後的請求中他們會被認證。

相關問題