ユーザーがサンプル アプリケーションにログインすると、セッション オブジェクトにユーザー名キーを追加し、ユーザー オブジェクトをグローバル "g" オブジェクトから切り離します。下記参照。
@app.route('/login/', methods=['GET', 'POST'])
def login():
"""Logs the user in."""
error = None
if request.method == 'POST':
print("login hit")
user = get_user(request.form['username'])
if user is None:
error = 'Invalid username'
print error
elif not check_password_hash(user.password, request.form['password']):
error = 'Invalid password'
print error
else:
flash('You were logged in')
print "logged in"
session['username'] = request.form['username']
g.user = request.form['username']
print error, "error"
return redirect(url_for('main'))
ここで、ユーザーが正常にログインすると (これが起こっていることです)、メイン ページにリダイレクトされます。これにより、古いリクエストが破棄され、新しいリクエストが生成されます。問題は、新しいリクエストが開始されるとセッションがワイプされることです。セッションキーを印刷していますが、それらはすべて空です。これは、ローカル マシンではなく、heroku でのみ発生します。私は何を間違っていますか。
@app.before_request
def before_request():
print session.keys(), session.values() # shows [] []
print("before request")
print ('username' in session, "in session?")
g.db = connect_db()
g.user = None
if "username" in session:
g.user = get_user(session['username'])