sqlite 为什么错误登录处理在 flask 中不起作用?

7d7tgy0s  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(245)

我一直在为我的网站处理 flask 验证页面,但由于某种原因,我的错误处理不起作用
这是我的app.py

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user:
            if bcrypt.check_password_hash(user.password, form.password.data):
                login_user(user)
                return redirect(url_for('dashboard'))
            if user is None:
                print("Invalid Credentials")
    return render_template('login.html', form=form)

有人知道为什么会这样吗

if user is None:
    print("Invalid Credit")

是不是错了?

gwbalxhn

gwbalxhn1#

您的语法“If User is None:”永远不会触发,因为如果User为None,您将永远不会在上面的条件语句“If User:”中。
如果您的目标是为错误的密码创建操作,则在if bcrypt.check_password_hash之后需要一个Else语句。在条件语句“if user”的相反位置添加另一个Else语句,以确定用户名是否存在于数据库中。

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        # username was found
        if user:
            # password is correct
            if bcrypt.check_password_hash(user.password, form.password.data):
                login_user(user)
                return redirect(url_for('dashboard'))
            # password is wrong
            else:
                print("Login Unsuccessful, Please check password")
        # username was not found
        else:
            print('Login Unsuccessful. Please check username')

    return render_template('login.html', form=form)

相关问题