以下是我的大学处理身份验证的方式:我们将用户重定向到网站,输入用户名和密码,然后使用用户名和在查询字符串中传递的登录密钥重定向回我们.当我们收回用户时,我们在大学的数据库中调用存储过程,该存储过程获取用户名,登录密钥和IP地址,并告诉我们这是否有效.
我有一个Django自定义身份验证后端设置来处理我们所有这一切的结束.我是否能够接受密码参数(因为我们实际上没有使用他们的密码),这会有什么不同吗?现在,我已将其设置为使用登录密钥作为密码参数.它是好的还是坏的,或者我不能改变这个,比如说,login_key而不是密码?
在Django文档这样说:
无论哪种方式,authenticate应检查它获得的凭据,如果凭据有效,它应返回与这些凭据匹配的User对象.如果它们无效,则应返回None.
"Either way"指的是authenticate()方法是采用用户名/密码组合还是仅采用令牌.您的场景介于这两者之间,因此我认为"最佳"答案是编写authenticate()以获取用户名和登录密钥,并根据需要返回正确的User或None.