2017-01-31 21 views
0

考慮一個網站,該網站在其磁盤上保持其用戶的活動,而不要求他們登錄/驗證。認識到臨時用戶通過Flask用戶會話返回

這將使用戶能夠返回並完整地查找其所有活動,即使服務器已重新啓動。

因爲用戶會話

from Flask import session 
session['foo'] = 'bar' 

是一個普通的字典,我假設當服務器停止並重新啓動它已被清除。因此,如果用戶的兩次訪問跨越服務器重新啓動,則不會持久。

爲此使用瓶,我們會使用一個數據庫會話

from flask.ext.sqlalchemy import SQLAlchemy 
db = SQLAlchemy() 
db.session.add(..) 
db.session.commit() 

和,因爲用戶沒有登錄,我們會不同用戶之間通過他們用戶會話區分。

什麼是可以從用戶會話中提取以在數據庫會話中保留的唯一ID?這個想法是,當用戶返回時,瀏覽器中的cookie將唯一標識它們,這反過來將意味着我們從用戶會話中散列的標識符將保持不變。

回答

1

從術語我假設你使用合劑 -

所以,db.session不參照「瀏覽」會議,與相關的最新單查看器而ratehr,它是指一個數據庫連接會話是唯一的網絡瀏覽週期(而不是瀏覽會話) - 這些是不同的東西。

因此,上面的代碼永久性,唯一的方式堅持你的對象在數據庫上。如果在重新啓動Flask應用程序時看不到它們,它必須是因爲您正在使用瞬態數據庫。只需調整您的配置即可使用永久磁盤數據庫,而不是內存中的sqlite實例或每次重新創建的碼頭容器中的數據庫。

您正在考慮的作爲「瀏覽」會話的「會話」在Flask中並不存在,您可以自己推出或使用其中一個插件,如https://pythonhosted.org/Flask-Session/ - 這是與PHP的「會話」有關。

相關問題