2012-09-12 66 views
1

我在webapp2應用程序中有以下要求。當用戶離開他的機器或瀏覽器時,該用戶以前的認證會話應該終止。Webapp2 - 當用戶從不同的瀏覽器登錄時使用戶登錄會話無效

我能夠做到這一點,當用戶從不同的機器登錄,通過存儲在用戶對象的REMOTE_ADDR在登錄。當請求用戶的會話時,我在登錄時檢查remote_addr對用戶的remote_addr的請求。

我不滿意這個解決方案,當用戶位於代理服務器將無法正常工作,也,當用戶使用不同的瀏覽器將無法正常工作。

是否webapp2的存儲會話ID的地方,這樣我就可以用它來看看用戶是否在一個新的會話登錄?

+0

當瀏覽器關閉時(並且不會在瀏覽器中持續存在),應該刪除會話cookie - 只要您正確設置了會話cookie(或webapp2),然後在每個識別用戶的請求上檢查此操作,你應該有你想要的行爲。恐怕我對webapp2不夠熟悉,無法給出具體的幫助! –

+0

@stu,你應該把這個置於官方的答案中,因爲我認爲你已經爲我提供瞭解決問題的關鍵。 –

+0

也許您可以自己發佈一個答案,並提供關於如何解決與webapp2相關的更具體的細節問題,爲了這個問題的任何人絆倒誰? –

回答

0

進行修改到什麼你已經這樣做:當用戶登錄時,創造出獨特/隨機令牌,並將其存儲在用戶對象,並與它的瀏覽器設置cookie。當請求用戶的會話時,檢查兩個令牌(來自請求cookie和用戶對象)匹配,如果不匹配,則刻錄會話。

這只是相同的,但不是remote_addr利用您生成並設置爲在登錄cookie隨機令牌。

0

當您在瀏覽器會話中第一次打開網站時,將創建網站會話。

當他登錄時,只需將會話ID存儲在數據庫中。 你需要有一個有活動登錄的好桌子。 如果您希望在他關閉並稍後重新啓動瀏覽器時讓他保持登錄狀態,則還可以在瀏覽器中設置Cookie。 顯然,如果Cookie存在,請將會話ID修改爲Cookie中的會話ID。

Cookies是瀏覽器之間所以在這種情況下,如果他從你改變了活動的登錄表中的會話ID的新的瀏覽器登錄不共享。

你也需要有一個小的AJAX來檢查,如果當前的會話仍然是活躍的,每5分鐘左右,如果沒有記錄他。

相關問題