Django自定义身份验证后端需要输入密码吗?

时间:2009-03-06 17:05:24

标签: python django authentication django-authentication custom-backend

以下是我的大学如何处理身份验证:我们将用户重定向到网站,他们输入用户名和密码,然后使用用户名和在查询字符串中传递的登录密钥重定向回我们。当我们收回用户时,我们会在大学的数据库中调用存储过程,该存储过程采用用户名,登录密钥和IP地址,并告诉我们这是否有效。

我有一个Django自定义身份验证后端设置来处理我们所有这一切的结束。我是否能够接受密码参数(因为我们实际上没有使用他们的密码),这会有什么不同吗?现在,我已将其设置为使用登录密钥作为密码参数。它是好的还是坏的,或者我都没有改变这个,比如说,login_key而不是密码?

1 个答案:

答案 0 :(得分:6)

Django docs这样说:

  

无论哪种方式,都应该检查身份验证   它获得的凭据,它应该   返回匹配的User对象   那些凭证,如果凭证   是有效的。如果它们无效,那就是   应该返回无。

'Either way'指的是authenticate()方法是采用用户名/密码组合还是仅采用令牌。您的场景介于这两者之间,因此我认为“最佳”答案是编写authenticate()以获取用户名和登录密钥,并根据需要返回正确的User或None。