为什么django需要一个数据库来进行自定义身份验证后端?

时间:2012-06-03 23:07:52

标签: django django-authentication

我实现了一个django自定义身份验证后端。我的 authenticate()返回一个像return User(username=username, password=password)这样的用户对象,但我从不将User对象存储到数据库中。

  1. 为什么django文档建议使用用户对象创建数据库? (https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend - “...解决这个问题的最佳方法是为每个用户创建一个Django用户对象你的后端存在......“)

  2. 如果我尝试调用 login(),则会调用数据库。如果登录存储在会话中,为什么需要数据库? (使用缓存会话)

2 个答案:

答案 0 :(得分:3)

您特别需要保存 User对象的原因是,应用程序通常会在对象和用户之间创建数据库级关系(以便在多个请求之间保持关系) )。

一个简单的例子是django.contrib.admin中的活动日志。它显示用户已执行的最近行为。这仅在将用户对象保存到数据库时才有效。

答案 1 :(得分:1)

相当多的应用都有auth.User的外键;如果您没有填充该表,那么您就无法使用这些应用程序。