如何在flask_httpauth的前端请求中发送用户名和密码?

时间:2019-07-12 08:08:35

标签: python html flask-restful flask-httpauth

我有一个实现基本用户名和密码验证的应用程序。当我从前端发出请求时,我希望能够发送用户名和密码auth标头以及表单数据。

单击表单提交后,如何将这些用户名和密码标题与请求一起发送。

我的验证密码如下:

@auth.verify_password
def verify_password(username, password):
    from email_scheduler.models.api_models import User
    user = User.query.filter_by(username=username).first()
    if not user or not user.verify_password(password):
        return False
    g.user = user
    return True

我的api是这样的:

class TaskCreate(Resource):
    method_decorators = {'post': [auth.login_required]} #handles auth

    def post(self):
        args = task_parser.parse_args()

        from email_scheduler.models.api_models import TaskModel
        task = TaskModel(task_text=args.get('task_text'), user_id=g.user.id)
        task.save_to_db()

        return make_response(jsonify({'message': 'Task added to the database'}), 200)

使用邮递员非常简单,我可以跳到授权选项卡,然后输入用户名和密码。如果有前端,该怎么办?

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法通过浏览器发出的GET或POST请求显式提交用于基本身份验证的其他标头,例如Authorization。您可以添加针对JavaScript发出的后台请求执行此操作。

对于计划浏览器请求,提交身份验证的唯一方法是通过从端点返回401状态代码来强制浏览器为您执行身份验证。当浏览器获取401时,它将显示一个登录对话框,用户可以在其中输入用户名和密码。之后,浏览器将向所有发送到该主机的后续请求添加Authorization标头。