【问题标题】:Do Django custom authentication backends need to take a password?Django 自定义身份验证后端是否需要输入密码?
【发布时间】:2010-10-11 19:14:30
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    Django docs 这么说:

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

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

    【讨论】:

    • 请务必查看默认身份验证的工作方式(通过查看代码),因为文档说它也可以执行其他操作。见备注“先调用 authenticate()”
    • +1:首先调用 authenticate()。我们使用 Profile 扩展来存储 MD5 摘要与 Django 使用的 SHA1 摘要分开,这样我们就可以进行合理的身份验证。
    猜你喜欢
    • 2021-02-06
    • 2018-02-24
    • 2011-01-25
    • 2015-07-31
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多