我需要有一个函数告诉我 django session ID 当前是否经过身份验证。我知道这已经内置在 django 中,而且我可以正常工作。

但是我有一个外部应用程序,它传递了一个 session id,当它把 session id 字符串传递回 django 时,我需要验证这个 session id 是否有效并且当前已通过身份验证。

我从哪里开始重用 django 1.2 的一些内置功能?

谢谢

最佳答案

您可以这样做(未经测试,但它向您展示了一种可能的方式):

from django.utils.importlib import import_module
from django.conf import settings
from django.contrib.auth import get_user
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth import SESSION_KEY, BACKEND_SESSION_KEY, load_backend

engine = import_module(settings.SESSION_ENGINE)
session = engine.SessionStore(YOUR_SESSION_KEY)

try:
    user_id = session[SESSION_KEY]
    backend_path = session[BACKEND_SESSION_KEY]
    backend = load_backend(backend_path)
    user = backend.get_user(user_id) or AnonymousUser()
except KeyError:
    user = AnonymousUser()

if user.is_authenticated():
    print "User"
else:
    print "Guest"

10-07 19:11
查看更多