我正在研究一个在django上运行的项目。我想在多个地方进行身份验证。首先,我想维护标准的身份验证机制并继续使用它进行站点管理。其次,除了标准身份验证之外,我还要拦截登录请求,并检查用户是否已在另一个系统上进行身份验证,并存储会话变量或cookie,以便稍后进行身份验证。然后在注销时删除会话变量或cookie。第二种认证机制不应该影响第一种。此外,如果第一个成功而第二个失败,则应该对标准管理没有影响。
我已经考虑在设置AUTHENTICATION_BACKENDS元组中声明自定义身份验证后端。但根据我的理解,它会按顺序进行身份验证,并在匹配完成后停止身份验证。
对此有任何指导意见,我们将不胜感激。谢谢
答案 0 :(得分:4)
如果你需要设置和取消设置cookie或会话var,你可以使用认证模块发送的信号(this answer)
示例:
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)