2014-09-28 132 views
0

现在我使用的瓶和瓶第三方库Flask-Session烧瓶会话不重装

使用下面的代码,我重新加载页面的4倍,并获得以下输出:

set userid[0] 
127.0.0.1 - - [27/Sep/2014 22:28:35] "GET/HTTP/1.1" 200 - 
set userid[1] 
127.0.0.1 - - [27/Sep/2014 22:28:37] "GET/HTTP/1.1" 200 - 
set userid[2] 
127.0.0.1 - - [27/Sep/2014 22:28:37] "GET/HTTP/1.1" 200 - 
set userid[3] 
127.0.0.1 - - [27/Sep/2014 22:28:38] "GET/HTTP/1.1" 200 - 

代码:

from flask import Flask, session 
from flask.ext.session import Session 

app = Flask(__name__) 
sess = Session() 

nextId = 0 

def verifySessionId(): 
    global nextId 

    if not 'userId' in session: 
     session['userId'] = nextId 
     nextId += 1 
     sessionId = session['userId'] 
     print ("set userid[" + str(session['userId']) + "]") 
    else: 
     print ("using already set userid[" + str(session['userId']) + "]") 
    sessionId = session.get('userId', None) 
    return sessionId 

@app.route("/") 
def hello(): 
    userId = verifySessionId() 
    return str(userId) 

if __name__ == "__main__": 
    app.config['SECRET_KEY'] = 'super secret key' 
    app.config['SESSION_TYPE'] = 'filesystem' 

    sess.init_app(app) 

    app.debug = True 
    app.run() 

每次我重新加载页面时,会不会'session''userId]被保存?

+2

是否启用cookies?会话ID保存在cookie中,与文件系统存储绑定。 – 2014-09-28 02:53:37

+0

@MartijnPieters是的...这是问题。这已经很长时间了,谢谢你的帮助。 – MintyAnt 2014-09-28 02:55:19

回答

2

您需要启用cookies以使会话正常工作。即使Flask-Session无法在没有这些的情况下跟踪浏览器。

Flask-Session设置一个具有唯一ID的cookie,然后再通过该cookie找到您的会话数据。