如何在前端请求中发送用户名和密码以使用 flask_httpauth 进行身份验证?

How do I send username and password in request from frontend for auth with flask_httpauth?

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

如何在单击表单提交时将这些用户名和密码 headers 连同请求一起发送。

我的验证密码是这样的:

@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)

用邮递员做起来相当简单,我可以跳到授权选项卡并输入用户名和密码。如果我有前端,我该怎么做?

遗憾的是,您无法通过浏览器发出的 GET 或 POST 请求显式提交用于基本身份验证的其他 header,例如 Authorization。您可以为从 JavaScript.

发出的后台请求添加执行此操作

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