我登录后立即退出。为什么?

时间:2015-12-26 02:21:06

标签: python login flask flask-login

我试图理解为什么在我登录后,一旦我重定向到另一个不同于我登录的登录页面。我不认为这个bug在登录视图中,我很确定这与更微妙的东西相关联。以下代码无论如何都与登录管理有关。

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

    if form.validate_on_submit():
        user = load_user(form.username.data)
        if user is not None and user.verify_password(form.password.data):
            if form.remember_me.data == True:
                login_user(user, remember=True)
            else:
                login_user(user)
            flash('Logged in successfully.')
            next = request.args.get('next')
            return redirect(next or url_for('home'))
        else:
            flash('Wrong username and/or password')

    form.username.data = request.args.get('username')
    return render_template('login.html', form=form, title='Login')

@lm.user_loader
def load_user(username):
    user = User.query.filter_by(username=username)
    if user.count()!=0 :
        return user.first()
    else:
        return None

@app.route("/logout")
@login_required
def logout():
    logout_user()
    flash('Logged out!')
    return to_index()

我不知道代码的其他部分对帖子有用,因为我对问题本身的起源非常困惑。

1 个答案:

答案 0 :(得分:2)

user_loader函数采用id,而不是名称。您将ID值与用户名列进行比较,但未获得任何结果。使用get方法按主键(id)查询User,如果不存在具有该ID的用户,则返回None。

@login_manager.user_loader
def user_loader(id):
    return User.query.get(id)