3

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

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

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

4

2 回答 2

4

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

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

于 2012-06-03T23:14:04.200 回答
2

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

于 2012-06-03T23:12:30.960 回答