如何使用给定的密码登录Flask

时间:2018-11-06 08:39:31

标签: python flask login flask-sqlalchemy

我正在使用Flask上传文件,并对其中的数据进行一些操作。我想在此主页之前创建一个用于登录的网页,您可以在其中提交您的数据。

我已经定义了密码yjkuvaZq12@P和用户名datascientist5。对于我所有的用户,它们都是相同的,我将它提供给可以访问该网站的人。

我想要的是任何想要上传一些数据的人都需要使用此用户名和此密码注册到网页中。为此,我创建了一个  html模板,其中有一个用于用户名的框和一个可供人们填写的密码的框。

但是,我不知道我必须在代码中指定我的密码和用户名是上面提到的密码,因此当有人登录时,我可以检查用户名和密码是否一致,以便将它们重定向到页面以加载数据。

到目前为止,我尝试过的是:

db = SQLAlchemy()

login_manager = LoginManager(app)
login_manager.init_app(app)
db.init_app(app)



@app.route("/", methods=["GET", "POST"])
def login():
    """For GET requests, display the login form. 
    For POSTS, login the current user by processing the form.

    """
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.get(form.email.data)
        if user:
            bcrypt =Bcrypt()
            if bcrypt.check_password_hash(user.password, form.password.data):
                user.authenticated = True
            login_user(user, remember=True)
            return redirect(url_for("app.home"))
return render_template("login.html", form=form)

但是我不知道应该在哪里或如何指定密码。现在,我可以在线访问可以提交数据的页面,无论我在线输入什么密码都无所谓。

我对此很陌生,因此我们将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

原因是如果密码错误,您什么也不做。 如果密码错误,则需要引发错误并停止访问:

if bcrypt.check_password_hash(user.password, form.password.data):
    user.authenticated = True
else:
    raise HTTPBadRequest('Wrong password')