Django:拦截身份验证以存储会话变量或cookie

Django:拦截身份验证以存储会话变量或cookie,django,authentication,Django,Authentication,我正在做一个在django上运行的项目。我想在多个地方进行身份验证。首先,我想维护标准的身份验证机制,并继续将其用于站点管理。其次,除了标准身份验证之外,我还想拦截登录请求,并检查用户是否在另一个系统上进行了身份验证,并存储会话变量或cookie,以便在进行身份验证后使用。然后在注销时删除会话变量或cookie。第二种身份验证机制不应影响第一种身份验证机制。此外,如果第一个成功,第二个失败,则对标准管理没有影响 我已经研究过在settings authentication_BACKENDS元组中

我正在做一个在django上运行的项目。我想在多个地方进行身份验证。首先,我想维护标准的身份验证机制,并继续将其用于站点管理。其次,除了标准身份验证之外,我还想拦截登录请求,并检查用户是否在另一个系统上进行了身份验证,并存储会话变量或cookie,以便在进行身份验证后使用。然后在注销时删除会话变量或cookie。第二种身份验证机制不应影响第一种身份验证机制。此外,如果第一个成功,第二个失败,则对标准管理没有影响

我已经研究过在settings authentication_BACKENDS元组中声明自定义身份验证后端。但据我所知,它按顺序进行身份验证,一旦匹配,它将停止身份验证


对此,如有任何指导,将不胜感激。谢谢

如果您只需要设置和取消设置cookie或会话变量,您可以使用身份验证模块()发送的信号

例如:

from django.contrib.auth.signals import user_logged_in, user_logged_out

def user_logged_in_hook(sender, **kwargs):
    # kwargs will contain request and user objects
    print kwargs


def user_logged_out_hook(sender, **kwargs):
    # kwargs will contain request and user objects
    print kwargs


user_logged_in.connect(user_logged_in_hook)
user_logged_out.connect(user_logged_out_hook)

如果您只需要设置和取消设置cookie或会话变量,则可以使用身份验证模块()发送的信号

例如:

from django.contrib.auth.signals import user_logged_in, user_logged_out

def user_logged_in_hook(sender, **kwargs):
    # kwargs will contain request and user objects
    print kwargs


def user_logged_out_hook(sender, **kwargs):
    # kwargs will contain request and user objects
    print kwargs


user_logged_in.connect(user_logged_in_hook)
user_logged_out.connect(user_logged_out_hook)