2

这是我的大学处理身份验证的方式:我们将用户重定向到一个网站,他们输入他们的用户名和密码,然后他们使用用户名和在查询字符串中传递的登录密钥被重定向回我们。当我们找回用户时,我们调用大学数据库中的一个存储过程,它获取用户名、登录密钥和 IP 地址,并告诉我们这是否有效。

我已经设置了一个 Django 自定义身份验证后端来处理所有这一切。我是否让它能够接受密码参数(因为我们实际上并没有使用他们的密码)是否有任何不同?现在,我已将其设置为将登录密钥作为密码参数。将其更改为将其作为登录密钥而不是密码对我来说是好是坏还是两者都不是?

4

1 回答 1

6

Django 文档这样说:

无论哪种方式,authenticate 都应该检查它获得的凭据,如果凭据有效,它应该返回一个与这些凭据匹配的 User 对象。如果它们无效,它应该返回 None。

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

于 2009-03-06T17:29:05.190 回答