Flask では、応答オブジェクトを直接変更することで Cookie が設定されているようです。
応答オブジェクトを返すだけでなく、ログインに成功したときにユーザーを別のページにリダイレクトするにはどうすればよいですか? ユーザーが REFRESH を押した場合に備えて、別のページをレンダリングするのではなく、ユーザーを具体的にリダイレクトしたいと思います。
同じページ login.html を表示するだけの現在のコードは次のとおりです。
@app.route('/login', methods=['POST', 'GET'])
def login():
errors = []
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
#Check the user's e-mail
try:
u = User(email)
except UserError, e:
errors.append(e)
else:
#Check the user's password
if not u.authenticatePassword(password):
errors.append(('password','Invalid password'))
return render_template('login.html',error=errors)
#Set the session
s = Session()
s.user_id = u.user_id
s.ip = request.remote_addr
#Try to set the cookie
if s.setSession():
response = make_response( render_template('login.html',error=errors))
response.set_cookie('session_id', s.session_id)
return response
return render_template('login.html',error=errors)