Flask-Login:登录用户并在注册后重定向到主页

时间:2016-01-26 01:31:08

标签: flask flask-login

使用flask登录,尝试在用户注册后登录用户。 user_login()适用于我的登录路由,但是在注册后,它会重定向到登录路由,而不是预期的主页。所以我的问题是,login_user()只能在'登录'路线?

这是我现在拥有的基本版本:

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')

更新: 我没有在我的user_loader

中正确加载我的用户

1 个答案:

答案 0 :(得分:1)

注册用户后,您将直接重定向到/home路由,这需要用户登录。但是你还没有在这个阶段实际登录,只创建了用户。

您应该在创建用户后在/register路线中添加以下内容:

    flask_login.login_user(user)