【问题标题】:Using Django to authenticate user from Flask使用 Django 从 Flask 对用户进行身份验证
【发布时间】:2021-06-02 13:28:33
【问题描述】:

您将如何从 Flask 应用程序访问 Django 身份验证框架?

我有一个 Django 应用程序和 Flask 应用程序在服务器上并行运行。两者都托管在同一个域后面,但路径不同,因此它们应该能够看到彼此的 cookie。

我正在使用 Flask 来运行一个简单的 API 微服务,而使用 Django 将是矫枉过正。但是,为了防止滥用,我仍然希望 Flask 检查请求的 cookie 以查看它们是否来自仍在 Django 应用程序中经过身份验证的用户。我不想在 Flask 中重新实现身份验证框架。

从 Flask 内部访问 Django 设置相对简单。我只是在我的 Flask 脚本的顶部放了这样的东西来设置我的 Django 设置模块的路径:

sys.path.insert(0, <path to Django project>)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mydjangoproject.settings")

from django.conf import settings

但是,我不确定如何更新 Flask 请求处理程序以从请求中提取正确的 cookie 并使用 Django 的身份验证后端验证它们。我该怎么做?

【问题讨论】:

  • 听起来是使用OpenID Connect 的好应用。我从未在 Django 上实现过它,但它无处不在,可能相当简单。

标签: python django flask


【解决方案1】:

通过 Django interals 挖掘会话和身份验证中间件,看起来很容易将 Flask 的本机请求实例提供给它们。这似乎对我有用:

from importlib import import_module
from django.conf import settings
from django.contrib.auth.middleware import get_user

engine = import_module(settings.SESSION_ENGINE)
SessionStore = engine.SessionStore
session_key = request.cookies.get(settings.SESSION_COOKIE_NAME)
request.session = SessionStore(session_key)
user = get_user(request)
print(user.is_authenticated)

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 2020-10-30
    • 2012-08-17
    • 1970-01-01
    • 2021-06-11
    • 2016-04-13
    • 2012-08-16
    • 2015-08-30
    • 2020-10-07
    相关资源
    最近更新 更多