2013-09-28 47 views
5

我一直在嘗試學習Flask,並沿着Flask-Login擴展的方式。我可以按預期進行基本身份驗證。導致我陷入困境的問題涉及Firefox中的「顯示我上次使用的窗口和選項卡」設置,以及Chrome中的「繼續停止我的位置」設置。我在本網站和其他地方所做的所有研究都表明,這些設置只適用於打開的標籤頁。因此,如果您經過身份驗證並關閉該選項卡,然後關閉瀏覽器,那麼瀏覽器應該只能恢復僅當瀏覽器關閉時打開的選項卡的僅會話cookie。但是,對於Firefox和Chrome瀏覽器,只有會話Cookie纔會在瀏覽器重新啓動時仍處於活動狀態,然後導航到標記爲@login_required的頁面。我還要提到的是我傳遞虛假的login_user記住參數,像這樣:login_user(user, remember=False)Flask-Login:關閉標籤時如何強制Firefox/Chrome刪除會話cookie?

我曾與與燒瓶登錄擴展以爲關閉瀏覽器之前關閉標籤肯定會標誌着新登錄的理念發揮各地該會話陳舊,但事實並非如此。我檢查login_fresh()的值,如果登錄是新鮮的,它將返回true,並且它仍然返回True。

我發現如何使登錄在給定時間後過期使用session.permanent = True,然後設置app.permanent_session_lifetime = 'so many minutes/seconds',它完美的工作,但不是我想要的。

我可以忍受Firefox/Chrome會記住會話cookie的事實,但是我不明白爲什麼他們會記住我的站點的會話cookie,即使在關閉瀏覽器之前關閉了選項卡。這是預期的行爲?當我先關閉標籤,然後關閉瀏覽器時,期望爲我的網站刪除會話cookie是否合理?

回答

3

這是預期的行爲?當我先關閉標籤,然後關閉瀏覽器時,期望爲我的網站刪除會話cookie是否合理?

顯然是的,這是預期的行爲,不,你不期望這樣的事情是不合理的。您所看到的行爲似乎是瀏覽器實現「會話恢復」功能的一種深思熟慮的設計決策。

狀態關閉因此,總之,我不認爲有什麼事你可以從服務器端怎麼處理這件事,沒有問題如何真棒瓶是:(

1

什麼日說是現貨和your expectations should be correct。不過,可能會有解決辦法。

您可以使用具有較短生命週期(PERMANENT_SESSION_LIFETIME)的永久會話並在每個請求(SESSION_REFRESH_EACH_REQUEST)上刷新其生命週期。

我認爲這是一個相當新的配置(0.10 IIRC)。