2016-01-26 5 views
0

Использование входа в колбу, попытка входа в систему пользователя после регистрации пользователем. user_login() работает для моего логина, однако после регистрации он перенаправляется на маршрут входа, а не на главную страницу. Поэтому мой вопрос: может ли login_user() работать только на маршруте «входа»?Flask-Login: войти в систему и переадресовать на домашнюю страницу после регистрации

Вот основной вариант того, что я сейчас:

class User(flask_login.UserMixin): 
def __init__(self, userName, email, firstName): 
     self.userName = userName 
     self.id = email 
     self.email = email 
     self.firstName = firstName 

@login_manager.user_loader 
def user_loader(email): 
    """ code to get userdata from database """ 

    user = User(userName,email,firstName) 

    return user 

@app.route('/register', methods=['GET','POST']) 
def register(): 
    if request.method == 'GET': 
     return render_template('register.html') 
    elif request.method == 'POST': 
     """ code for creating user from form data """ 
     #create session for user 
     user = User(userName,email,firstName) 

     flask_login.login_user(user) 

     return redirect(url_for('home')) 

@app.route('/login', methods=['GET','POST']) 
def login(): 

    if request.method == 'GET': 
     return render_template('login.html') 

    elif request.method == 'POST': 
     """ code for authorizing a user """ 

     user = User(userName,email,firstName) 

     flask_login.login_user(user) 
     return flask.redirect(flask.url_for('home')) 
    else: 
     return render_template('login.html') 

@app.route('/home') 
@flask_login.login_required 
def home(): 
    return render_template('home.html') 

UPDATE: я не нагружал мой пользователь правильно в моем user_loader

ответ

1

После регистрации пользователя, вы перенаправлении прямо на маршрут /home, который требует, чтобы пользователь был зарегистрирован. Но вы на самом деле не зарегистрировали их на этом этапе, а только создали пользователя.

Вы должны добавить следующее в вашем /register маршрута после того, как пользователь был создан:

flask_login.login_user(user) 
+0

O стрелять я забыл добавить эту строку в моем вопросе тексте. - Я пробовал эту штуку в своем действительном коде, и все равно безуспешно. Однако должно ли быть возможно, что пользователь login_user в регистровом маршруте правильный? – dasqueel

+0

Да, обычно, когда они регистрируются, вы вызываете login_user, чтобы сразу их регистрировать. –

+0

Кажется, что login_user (пользователь) выполняет и перенаправляет его из реестра на дом, однако у меня есть login_required() для моей домашней страницы, а когда login_required() терпит неудачу, он перенаправляется на страницу входа. - Итак, у меня сейчас 1: я регистрируюсь, 2: перенаправляет меня домой 3: не удалось login_required() 4: перенаправляет меня на логин - надеюсь, эта информация помогает? – dasqueel