私はしばらくの間、ログインフォームを使用し、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