我知道当用户获取login(request, user)
Cookie和request.is_authenticated
时,可以使用内置的django sessionid
,authenticate(request, username="foo", password="bar")
设置身份验证。
但是,在此界面下,django会在数据库中创建一个User
对象。我正在使用其他方法进行身份验证,即LDAP。我可以选择每次都只传递LDAP的用户名和密码,但拥有一个sessionid令牌是理想的。
有没有办法使用相同的login(), request.is_authenticated, authenticate()
API但不使用下面的User
模型?另一种选择也很好。我的一个限制是我不想使用另一个库。
谢谢!
答案 0 :(得分:0)
据我所知,没有User
模型就不可能使用djangos身份验证/自动化框架。
在文档谈论customizing authentication的部分中,它始终以User
模型为中心(即使它是您的自定义用户模型)。
话虽这么说,你可以看一些非常黑客的东西:创建未存储在数据库中的custom user model。
为此,您可能需要自定义字段和管理器来阻止数据库调用,同时仍然在模型中提供某些字段(例如email
和username
)。我从未尝试过,但应该可以通过在正确的位置覆盖djangos默认行为来实现。
但所有这些努力可能都不值得。只需编写own authentication backend即可在针对LDAP源成功进行身份验证时自动创建User
实例,这样您就可以“充分发挥django User
模型的潜力”