2010-02-26 74 views
0

所有註銷功能

在Django項目,如果2個模板窗口被打開,如果註銷在1個窗口觸發其他窗口cookie不會cleared.How刪除Cookie也使註銷將被觸發。

def logout(request): 
    //request = redirect('webbie.home.views.loginpage') 
    //request.delete_cookie('user_location') 
    return auth_logout(request) 

謝謝..

回答

0

你是什麼意思是什麼呢?你的意思是,如果你必須在同一個網站打開窗戶,並且你在一個窗口註銷,你沒有註銷到另一個窗口?我不信。

當然,您沒有在其他窗口中重定向到某個頁面,因爲您在此特定窗口中沒有做任何事情。但是,如果您點擊僅適用於登錄用戶的鏈接,則應將其重定向到登錄頁面。

而且,不能在客戶端檢測到用戶是否從另一個站點註銷,至少不是沒有Ajax和一些自定義檢查。

+0

重定向到登錄頁面是不是在它的登錄狀態,第二個窗口發生set.So我教有可能是因爲問題與餅乾 – Hulk 2010-02-26 08:46:50

+0

它沒有發生。你的意思是如果你改變頁面,你仍然登錄? 如果你有一個ajax風格的應用程序,你負責檢查用戶狀態,然後根據需要重定向他。 – jujule 2010-02-26 14:36:32

1

在cookie中,您應該只存儲會話密鑰。然後,服務器需要跟蹤所有會話密鑰並將過期日期/時間和用戶帳戶與它們關聯。對於每個登錄的用戶,都應該給它一個新的會話密鑰,儘管你可能允許多個登錄/用戶帳戶。所以當你檢查cookie是否有效時,你需要諮詢你的服務器數據庫,看看你是否有這個會話密鑰並且它是有效的。如果您現在想要在用戶帳戶中註銷其中一個帳戶時註銷所有活動會話,則只需從服務器會話密鑰列表中刪除所有會話密鑰即可。
您應該嘗試不在cookie中存儲敏感數據,會話密鑰已足夠,然後讓服務器將數據關聯到此密鑰。現在您可以控制登錄的用戶。對有文檔
更多Django的會話信息:http://docs.djangoproject.com/en/dev/topics/http/sessions/