没有auth.models.User的django中的会话ID令牌

时间:2018-05-07 22:57:56

标签: django python-3.x django-authentication

我知道当用户获取login(request, user) Cookie和request.is_authenticated时,可以使用内置的django sessionidauthenticate(request, username="foo", password="bar")设置身份验证。

但是,在此界面下,django会在数据库中创建一个User对象。我正在使用其他方法进行身份验证,即LDAP。我可以选择每次都只传递LDAP的用户名和密码,但拥有一个sessionid令牌是理想的。

有没有办法使用相同的login(), request.is_authenticated, authenticate() API但不使用下面的User模型?另一种选择也很好。我的一个限制是我不想使用另一个库。

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,没有User模型就不可能使用djangos身份验证/自动化框架。

在文档谈论customizing authentication的部分中,它始终以User模型为中心(即使它是您的自定义用户模型)。

话虽这么说,你可以看一些非常黑客的东西:创建未存储在数据库中的custom user model

为此,您可能需要自定义字段和管理器来阻止数据库调用,同时仍然在模型中提供某些字段(例如emailusername)。我从未尝试过,但应该可以通过在正确的位置覆盖djangos默认行为来实现。

但所有这些努力可能都不值得。只需编写own authentication backend即可在针对LDAP源成功进行身份验证时自动创建User实例,这样您就可以“充分发挥django User模型的潜力”