簡體   English   中英

使用 Django 對來自 Flask 的用戶進行身份驗證

[英]Using Django to authenticate user from Flask

您將如何從 Flask 應用程序訪問 Django 身份驗證框架?

我有一個 Django 應用程序和 Flask 應用程序在服務器上並行運行。 兩者都托管在同一個域后面,但在不同的路徑后面,因此它們應該能夠看到彼此的 cookies。

我正在使用 Flask 運行一個簡單的 API 微服務,其中使用 Django 將是矯枉過正。 但是,為了防止濫用,我仍然希望 Flask 檢查請求的 cookies 以查看它們是否來自仍在 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 請求處理程序以從請求中提取正確的 cookies 並使用 Django 的身份驗證后端驗證它們。 我該怎么做?

挖掘 session 和身份驗證中間件的 Django 內部程序,看起來很容易將 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM