2

私はしばらくの間、ログインフォームを使用し、Flask-JWT-Extended で JWT を作成し、チェックに合格した場合はリダイレクトと一緒に渡すことを試みてきました。

以下の非常に単純な例ですが、「No Authorization Header」というメッセージが返されるため、設定されているヘッダーが渡されないと思いますか? 認証がOKの場合にテンプレートをレンダリングするビューを保護したい。

@app.route("/")
def index():
    return render_template("index.html")

@app.route('/login', methods=['POST'])
def login():
    username = request.form["username"]
    password = request.form["password"]

    if not username:
        return jsonify({"msg": "Missing username parameter"}), 400
    if not password:
        return jsonify({"msg": "Missing password parameter"}), 400

    if username != 'test' or password != 'test!':
        return jsonify({"msg": "Bad username or password"}), 401

    access_token = create_access_token(identity=username)
    response = redirect('http://127.0.0.1:5000/protected')
    response.headers["Authorization"] = f'Bearer {access_token}'
    return response

@app.route('/protected', methods=['GET'])
@jwt_required
def protected():
    current_user = get_jwt_identity()
    return jsonify(logged_in_as=current_user), 200
4

0 に答える 0