我有一个实现基本用户名和密码验证的应用程序。当我从前端发出请求时,我希望能够发送用户名和密码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)
使用邮递员非常简单,我可以跳到授权选项卡,然后输入用户名和密码。如果有前端,该怎么办?
答案 0 :(得分:0)
不幸的是,您无法通过浏览器发出的GET或POST请求显式提交用于基本身份验证的其他标头,例如Authorization
。您可以添加针对JavaScript发出的后台请求执行此操作。
对于计划浏览器请求,提交身份验证的唯一方法是通过从端点返回401状态代码来强制浏览器为您执行身份验证。当浏览器获取401时,它将显示一个登录对话框,用户可以在其中输入用户名和密码。之后,浏览器将向所有发送到该主机的后续请求添加Authorization
标头。