登录验证无法正常工作

问题描述 投票:0回答:1

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

def 登录():

if current_user.is_authenticated:

    return redirect(url_for('homepage'))



form = LoginForm()



if request.method == 'POST':

    username = request.form['username']

    password = request.form['password']



    user = User.query.filter_by(username=username).first()



    if user and check_password_hash(user.password_hash, password):

        flash('Login successful!')

        return redirect(url_for('homepage'))

    else:

        flash('Invalid username or password.', 'error')

        return redirect(url_for('login'))



return render_template('/users/login.html', title='Login', form=form)

在路由函数之外定义 is_authenticated

def is_authenticated():

return current_user.is_authenticated

我尝试在登录路由中添加身份验证,但仍然登录未注册。

python flask
1个回答
0
投票

看来您只是查询了用户,并没有执行任何操作来使用户登录。例如,要使用户登录,您可以使用

login_user
包中的
flask_login
方法。

from flask_login import login_user

if user and check_password_hash(user.password_hash, password):
    login_user(user)
    flash('Login successful!')
    return redirect(url_for('homepage'))

之后,要检查是否有任何用户登录,您可以使用同一包中的

current_user
方法。

最终,您可以使用这样的视图:

from flask_login import current_user, login_user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        return redirect(url_for('homepage'))

    form = LoginForm()

    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data

        user = User.query.filter_by(username=username).first()

        if user and check_password_hash(user.password_hash, password):
            login_user(user)
            flash('Login successful!')
            return redirect(url_for('homepage'))
        else:
            flash('Invalid username or password.', 'error')

    return render_template('/users/login.html', title='Login', form=form)
© www.soinside.com 2019 - 2024. All rights reserved.