2011-10-20 69 views
3

我使用的<asp:LoginStatus>對照(<asp:Login>一起)ASP.NET登錄/成員資格 - 如何註銷?

我成功登錄爲
然後我註銷。
如果我然後登錄爲B,當前用戶仍然是A
(兩者<asp:LoginName>HttpContext.Current.User.Identity.Name都呈現

我需要清除cookie來完全註銷。

爲什麼.NET登錄控件不能正確登錄?任何人有任何想法?

編輯:我向大家道歉!這是一個Umbraco錯誤。我忘了我是用UmbracoMembershipProvider

+1

你說:'如果我然後登錄爲B,那麼當前用戶仍然是A.',你可以填寫嗎?輕鬆地告訴我們你是如何找到它的,用戶仍然是一個? – Mostafa

+2

任何機會是頁\控制緩存? – Chandermani

+0

你如何精確登出?在註銷時,您應該調用Session.Abandon,然後重定向到登錄頁面並在調試器中檢查context.current.user.isauthenticated在此時是否爲false。 –

回答

17

上登出來徹底清除登錄的用戶,我會用:

Session.Clear() 
Session.Abandon() 
FormsAuthentication.SignOut() 
FormsAuthentication.RedirectToLoginPage() 
+0

我添加onloggedout我LoginStatus如下
'的' 這
'保護無效LoginStatus1_LoggedOut(對象發件人,EventArgs的) { 會話。明確(); Session.Abandon(); FormsAuthentication.SignOut(); string user = HttpContext.Current.User.Identity.Name; //但是這仍然顯示A! FormsAuthentication.RedirectToLoginPage(); }' – Aximili

+0

對不起,我不能在那裏換行。總之,我已經完成了你的建議,但它不清楚'HttpContext.Current.User.Identity.Name' – Aximili

+0

對不起,忘了它,這是一個Umbraco錯誤! – Aximili

2

我就接受艾拉的答案,因爲我的問題是錯誤的。

這是解決了一把umbraco錯誤:

添加onloggedout到LoginStatus

<asp:LoginStatus ... onloggedout="UmbracoLogout" /> 

是手動清除緩存

protected void UmbracoLogout(object sender, EventArgs e) 
    { 
    Member.RemoveMemberFromCache(Member.CurrentMemberId()); 
    Member.ClearMemberFromClient(Member.CurrentMemberId()); 
    } 

(從http://our.umbraco.org/projects/website-utilities/nforum/bugs/18405-Cache-problem