0

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

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

我的验证密码如下所示:

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

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

4

1 回答 1

2

不幸的是,您不能显式提交附加标头,例如Authorization用于浏览器发出的 GET 或 POST 请求的基本身份验证。您可以为从 JavaScript 发出的后台请求添加此操作。

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

于 2019-07-14T10:24:00.703 回答