文档:https://docs.djangoproject.com/en/1.7/topics/auth/default/#django.contrib.auth.login
当您手动登录用户时,必须在调用login()之前调用authenticate()。 authenticate()为User设置一个属性,记录哪个验证后端成功验证了该用户(有关详细信息,请参见后端文档),在登录过程中稍后需要使用此信息。如果您尝试直接登录从数据库检索的用户对象,则会引发错误。
那么为什么 authenticate
和 login
是两个单独的函数呢?据我所知,authenticate
只是验证登录信息。 login
将获取的用户对象并设置cookie。我唯一能想到的原因是,也许您可以放入不同的用户对象,例如用户合并了 2 个帐户。也许您想先验证电子邮件地址。这就是它们为什么是单独的函数而 login
不包装 authenticate
的唯一原因吗?