2012-09-04 11 views
19

Wydaje się, że w kolbie, pliki cookie są ustawione przez modyfikację obiekt odpowiedzi bezpośrednio.W Kolby ustawić ciasteczko, a następnie przekierować użytkownika

Jak mogę zwrócić obiekt odpowiedzi, ale również przekierować użytkownika na inną stronę po udanym logowaniu? Chciałbym wyraźnie przekierować użytkownika zamiast renderowania inną stronę, w przypadku gdy użytkownik wciśnie odświeżania.

Oto mój aktualny kod, który po prostu wyświetla tę samą stronę, 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) 

Odpowiedz

34

należy zmienić swój kod do czegoś podobnego:

from flask import make_response 
if s.setSession(): 
    response = make_response(redirect('/home')) 
    response.set_cookie('session_id', s.session_id) 
    return response 
Powiązane problemy