我实现了一个django自定义身份验证后端。我的 authenticate()返回一个像return User(username=username, password=password)
这样的用户对象,但我从不将User对象存储到数据库中。
为什么django文档建议使用用户对象创建数据库? (https://docs.djangoproject.com/en/1.4/topics/auth/#writing-an-authentication-backend - “...解决这个问题的最佳方法是为每个用户创建一个Django用户对象你的后端存在......“)
如果我尝试调用 login(),则会调用数据库。如果登录存储在会话中,为什么需要数据库? (使用缓存会话)
答案 0 :(得分:3)
您特别需要保存 User
对象的原因是,应用程序通常会在对象和用户之间创建数据库级关系(以便在多个请求之间保持关系) )。
一个简单的例子是django.contrib.admin
中的活动日志。它显示用户已执行的最近行为。这仅在将用户对象保存到数据库时才有效。
答案 1 :(得分:1)
相当多的应用都有auth.User
的外键;如果您没有填充该表,那么您就无法使用这些应用程序。