2013-02-27 109 views
4

我在一個web應用程序使用成員資格提供來實現認證和用戶/應用的部分角色的訪問工作。ASP.NET LoginStatus:註銷不工作

我用我的母版頁或註銷鏈接LoginStatus控制,但它的測試我發現,註銷不起作用。如果我再次嘗試訪問我的應用程序的任何頁面(後洛出)的頁面顯示...

我想這個問題取決於不會自動清除存儲在用戶會話數據。那就對了?

因此,這是實現註銷,明確會議的corect方式?

注意 我不落實的LoginStatus控制的任何事件。我正在使用表單身份驗證。在我的登錄頁面,我使用此代碼:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, // Ticket version 
    this.txtUser.Text, // Username associated with ticket 
    DateTime.Now, // Date/time issued 
    DateTime.Now.AddMinutes(30), // Date/time to expire 
    true, // "true" for a persistent user cookie 
    ruolo, // User-data, in this case the roles 
    FormsAuthentication.FormsCookiePath); 

string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(
    FormsAuthentication.FormsCookieName, 
    hash); 

if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; } 

Response.Cookies.Add(cookie); 

在我的web.configsystem.web部分:

<authentication mode="Forms"> 
    <forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" path="/" domain="keyforup.it"/> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 
+0

我有這樣的事情之前,我發現是問題了'SessionID'保持因無效的IIS設置更改,請確保您打印出'SessionID'頁面,以確保其不會改變。 – Qpirate 2013-02-27 09:09:08

+0

「如果我嘗試再次訪問我的應用程序的任何頁面(後洛出)的頁面顯示」 - 你有在web.config中,以防止頁面的任何東西顯示給未授權的用戶 - 例如拒絕用戶=「?」在web.config中 – Joe 2013-02-27 09:33:31

+0

的System.Web程序/授權部@Joe是的......我編輯我的問題 – davioooh 2013-02-27 09:44:34

回答

0

撥打LoggedOut事件LoginStatus控制Session.Abandon()解決了這個問題,但我不知道這是否是實現這一目標的最佳方式。

+0

你可以發佈你的'LogOut'行動嗎?只是使用'FormsAuthentication.SignOut'可以說*更清潔:) – mattytommo 2013-02-27 11:19:57

+0

@mattytommo不幸的是'FormsAuthentication.SignOut'似乎不適合我... – davioooh 2013-02-27 15:16:40

2

我幾乎失去了我的腦海裏試圖找到一個解決這個問題。在其他瀏覽器上一切正常,但firefox和chrome登錄後不會將用戶登錄到初始頁面。

當我設置表單的action屬性中的Site.Master文件作爲行動=「的Default.aspx」,它開始工作。

當我在瀏覽器調試看着表單動作有默認值,但在Chrome和Firefox的行動早已不是屬性集。我在想這可能是.net登錄狀態控制腳本的問題。

因爲我的系統現在工作我不會進一步搜索,但我希望這將是有益的具有類似問題的人。