Python Flask 无法访问蓝图中的应用程序

Python Flask can't access app inside Blueprint

我一直在尝试用 flask 构建一个 keycloak oidc 身份验证流程。

在使用 oidc 之前,我需要在我的 /auth 蓝图中初始化 oidc 变量。 我听不懂 运行.

from flask import Blueprint, current_app
from flask_oidc import OpenIDConnect

auth = Blueprint('auth', __name__, static_folder="static", template_folder="templates")

app = current_app._get_current_object()

with app.app_context():
    oidc = OpenIDConnect(app)

我收到以下错误:

RuntimeError: Working outside of application context.

如何使用蓝图中的 OpenIDConnect? 我知道类似的问题已经被问过多次,但我无法理解 运行 他们的解决方案。

如果您使用 Flask 应用工厂模式,我建议使用 init_app 方法初始化 Flask-OIDC

一些示例代码:

from flask import Flask
from flask_oidc import OpenIDConnect

oidc = OpenIDConnect()

def create_app():
    app = Flask(__name__)

    # Initialize OIDC
    oidc.init_app(app)

    return app

现在,如果您需要访问实例,您可以从您的应用程序导入 oidc,例如 from app import oidc

https://flask-oidc.readthedocs.io/en/latest/#flask_oidc.OpenIDConnect.init_app