Flask 使用烧瓶炼金术API post方法时出现问题';行不通

Flask 使用烧瓶炼金术API post方法时出现问题';行不通,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,尝试制作我的第一个web API,在一些视频中找到了代码,我想用这个方法来创建一个新用户,但首先我需要登录,在Postman中我发送get请求basic auth,输入名称和密码并想要获得令牌,但得到“无法验证”,为什么会发生这种情况,我如何修复它 from flask import Flask, request, jsonify, make_response from flask_sqlalchemy import SQLAlchemy import uuid from werkzeug.se

尝试制作我的第一个web API,在一些视频中找到了代码,我想用这个方法来创建一个新用户,但首先我需要登录,在Postman中我发送get请求basic auth,输入名称和密码并想要获得令牌,但得到“无法验证”,为什么会发生这种情况,我如何修复它

from flask import Flask, request, jsonify, make_response
from flask_sqlalchemy import SQLAlchemy
import uuid
from werkzeug.security import generate_password_hash, check_password_hash
import jwt
import datetime
from functools import wraps

app = Flask(__name__)

app.config['SECRET_KEY'] = 'thisissecret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'

db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    public_id = db.Column(db.String(50), unique=True)
    name = db.Column(db.String(50))
    password = db.Column(db.String(80))
    admin = db.Column(db.Boolean)


class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(50))
    complete = db.Column(db.Boolean)
    user_id = db.Column(db.Integer)


def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = None

        if 'x-access-token' in request.headers:
            token = request.headers['x-access-token']

        if not token:
            return jsonify({'message' : 'Token is missing!'}), 401

        try: 
            data = jwt.decode(token, app.config['SECRET_KEY'])
            current_user = User.query.filter_by(public_id=data['public_id']).first()
        except:
            return jsonify({'message' : 'Token is invalid!'}), 401

        return f(current_user, *args, **kwargs)

    return decorated

@app.route('/login')
def login():
    auth = request.authorization

    if not auth or not auth.username or not auth.password:
        return make_response('Could not verify', 401, {'WWW-Authenticate' : 'Basic realm="Login required!"'})

    user = User.query.filter_by(name=auth.username).first()

    if not user:
        return make_response('Could not verify', 401, {'WWW-Authenticate' : 'Basic realm="Login required!"'})

    if check_password_hash(user.password, auth.password):
        token = jwt.encode({'public_id' : user.public_id, 'exp' : datetime.datetime.utcnow() + datetime.timedelta(minutes=30)}, app.config['SECRET_KEY'])

        return jsonify({'token' : token.decode('UTF-8')})

    return make_response('Could not verify', 401, {'WWW-Authenticate' : 'Basic realm="Login required!"'})

if __name__ == '__main__':
    app.run(debug=True)

您是否在请求中发送头
x-access-token
我不知道,我只是在正文中填入名称和密码,然后发送
x-access-token
看起来它应该是由您的服务器生成的,并返回给客户端以供重复使用。确保在请求中包含头,并且该头是服务器提供给您的有效值。