python - Django 。当我们登录时,我们如何自动从 AnonymousUser 转移到 AbstractBaseUser

标签 python django authentication

我注意到当我们登录 Django 时,我们不再是 AnonymousUser(在 models.py 中),而是成为 AbstractBaseUser(在 models.py 中)。

django 如何处理这个变化?

最佳答案

基本上它在 django/contrib/auth/middleware.pyAuthenticationMiddleware 中:request.user = SimpleLazyObject(lambda: get_user(request))

从同一模块调用 get_user:

def get_user(request): if not hasattr(request, '_cached_user'): request._cached_user = auth.get_user(request) return request._cached_user

最后 get_userdjango/contrib/auth/__init__.py 返回 return user or AnonymousUser() . 您很可能对最后一个感兴趣。

关于python - Django 。当我们登录时,我们如何自动从 AnonymousUser 转移到 AbstractBaseUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28066579/

相关文章:

Python 登录脚本

security - 在 Dart 中从浏览器向 websocket 连接添加额外的 header

python - 始终返回数组的 numpy 切片

python - 在 if 语句条件中使用 "or"

python - pip 安装 --editable : links to wrong path

python - 加载Keras模型KeyError : 'weighted_metrics'

python - "No installed app with label ' admin '"在空的 Django 2.2 项目中

python - 在 Django 模板中捕获异常

java - 创建基于角色的 Web 应用程序的最佳方法是什么?

python - 在 HTML 中嵌入图像的 Django EmailMultiAlternatives