为什么authenticate() 对非活动用户返回 None ?

2024-03-13

I have CustomUser像下面这样:

        class CustomUser(AbstractBaseUser, PermissionsMixin):
            email = models.EmailField(max_length=100, unique=True)
            username = models.CharField(max_length=20, unique=True)
            is_active = models.BooleanField(default=False)
            is_staff = models.BooleanField(default=False)
            ...

这是active default=False用户注册后自动处理UserLogindef 是:

        def UserLogin(request):
            if request.POST:
                username = request.POST['username']
                user = authenticate(username=username, password=request.POST['password'])
                print('user :', user)  # which is print None if user inactive 
                if user is not None:
                    print('is user active:', user.is_active)   # should print True or False  
                    if user.is_active:
                        login(request, user)
                        ... 
                    else:  # handle user inactive
                        ...
                else:  # for None user 
                   ...

我仍在尝试理解为什么authenticate return None对于不活跃的用户?

搜索后我发现了更微笑的问题对于模板上的非活动用户,user.is_authenticated 始终返回 False https://stackoverflow.com/questions/39993714/user-is-authenticated-always-returns-false-for-inactive-users-on-template但没有找到适合我情况的答案


首先,请注意 Django 附带了登录视图 https://docs.djangoproject.com/en/2.0/topics/auth/default/#django.contrib.auth.views.LoginView and 认证表格 https://docs.djangoproject.com/en/2.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm当非活动用户尝试登录时,它们会显示适当的错误消息。如果您使用它们,那么您可能不必更改以下行为authenticate().

从 Django 1.10 开始,默认ModelBackend身份验证后端不允许用户使用is_active = False登录。

如果您想允许非活动用户登录,那么您可以使用AllowAllUsersModelBackend后端。

AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']

See the is_active https://docs.djangoproject.com/en/2.0/ref/contrib/auth/#django.contrib.auth.models.User.is_active文档以获取更多信息,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么authenticate() 对非活动用户返回 None ? 的相关文章

随机推荐

  • transitiveMemberOf $filter 仅当您是直接成员时才有效

    我正在尝试使用 Graph 来查明用户是否是某个组的传递成员 例如 Bob 是 Marketing 的成员 而 Marketing 是 Company 的成员 Bob 是 Company 的成员吗 If I do me transitive
  • 如何在 FastAPI 的 CORS 中间件中正确使用正则表达式?

    我有一个使用 FastAPI 后端和 Next js 前端的应用程序 在具有稳定来源的开发和生产中 我能够毫无问题地使用 CORSMiddleware 不过 我已经使用 Vercel 部署了 Next js 前端 并且希望利用 Vercel
  • 提取“/”前后的字符

    我试图提取 之前和之后的字符 但没有成功 句子是 XXXX YYY ZZZ AV HAHEHRS 3061 SDDW ASDA DDSF SAO JOSE DOS CAMPOS SP CEP 00000 000 输出应该是 SAO JOSE
  • PDFBox:处理非常大的 PDF。

    我正在处理一些非常大的 PDF 有些大小超过 7GB PDF 最多有 20 000 页和许多整页彩色图像 我想使用 PDFBox 来处理 PDF 但由于大小 当我尝试打开 PDF 时 出现 OutOfMemoryError 我正在使用版本
  • 如何用一个元素创建 3D 透视图像?

    I have a code that given an image does the effect of perspective in 3D This is the result 这是代码 thumb margin 100px perspe
  • 混合 http/https 站点

    到目前为止 我的 https 部署通常涉及使用 https 对整个站点进行简单锁定 并在 Web 服务器上提供 http 到 https 的重定向 我现在计划拥有一个 ASP NET MVC 站点 在云上 其中包含 http 和 https
  • Firebase 身份验证令牌过期时间

    我刚刚升级到新版本的 Firebase 但找不到在哪里可以设置 Firebase 身份验证令牌的过期时间 它曾经位于 Firebase 旧布局中的身份验证部分下 我将其设置了 1 年 Firebase 还有这个吗 如果您继续使用 Fireb
  • 0x7f 有什么特别之处?

    我正在阅读 avro 格式规范并试图了解其实现 下面是解码的方法长值 https avro apache org docs 1 8 2 spec html schema primitive Override public long read
  • 为什么局部函子不好?

    例如 如果谓词仅使用一次 那么在主函数中声明类加倍器有什么问题 include
  • 如何停止 docker pull

    我刚刚开始学习docker 在教程中 我看到了 docker pull 命令 可以像这样使用docker pull container name从 docker hub 存储库中提取相应的容器 But in case if you canc
  • HDFS 复制因子更改

    如果集群中的复制因子发生变化 例如从 5 更改为 3 并且集群重新启动 旧文件块会发生什么情况 它们是否会被视为过度复制并被删除 或者复制因子仅适用于新文件 这意味着旧文件块被复制 5 次 新文件块 重新启动后 被复制 3 次 如果集群不重
  • 为什么在定义具有 0 个输出的 MATLABContainers.Map 子类方法时出现“太多输出参数”?

    我试图通过子类化 MATLABContainers Map 类并添加具有 0 个输出的附加方法来扩展它 但在执行该方法时遇到 输出参数太多 错误 这并不是新方法实现所特有的 任何使用 0 输出扩展Containers Map 的其他方法都会
  • GraphQL 嵌套查询定义

    我正在尝试为我的查询创建树状结构 以摆脱像 peopleList peopleSingle peopleEdit peopleAdd peopleDelete companyList companySingle companyEdit co
  • Ruby 中有 nvl() 函数还是我必须自己编写它?

    我想使用 Oracle 的等效项nvl Ruby 中的函数 是否有内置函数或者我必须自己编写一个 Edit 我用它来将一些 sql 重写为 ruby INSERT INTO my table id val VALUES 1 nvl my v
  • git 和 CR 与 LF(但不是 CRLF)

    这听起来像是一个多余的问题 而且很可能是一个多余的问题 但我找不到答案 情况是这样的 我的应用程序正在创建以 CR 作为行结尾的文本文件 更具体地说 我没有明确地将行结尾设置为 CR 它恰好是我用来获取文本正文的命令的输出 当然 我可以手动
  • 使用 ExecutorService 执行异步任务时出现问题

    我曾问过一个问题earlier https stackoverflow com questions 8668839 java velocity engine initialization issue关于 ExecutorService 和
  • 在 C#/.NET3.5 中构造动态 SQL 查询的最佳方法?

    我目前正在进行的一个项目涉及重构 C Com 对象 该对象充当某些 Sql 2005 数据库的数据库访问层 现有代码的作者使用字符串和许多 if 语句手动构建了所有 sql 查询 以构造相当复杂的 sql 语句 约 10 个连接 gt 10
  • 如何将 spring mvc 应用程序打包到 jar 中?

    我有一个使用构建的应用程序maven and spring mvc and tomcat7 maven plugin 我可以将它们打包成一个jar文件 以便我可以运行该jar文件来启动tomcat服务器吗 这意味着我不需要tomcat 只需
  • 将多个工作表中的 Excel 数据复制到一张工作表中

    我尝试在互联网上搜索这个问题的各种答案 但找不到正确的答案 我有一个 Excel 工作簿 其中的工作表代表该月的每一天 每张表的格式都是相同的 周六和周日除外 并且包含通话统计信息 它以以下格式呈现 00 00 00 300 4 6 3 4
  • 为什么authenticate() 对非活动用户返回 None ?

    I have CustomUser像下面这样 class CustomUser AbstractBaseUser PermissionsMixin email models EmailField max length 100 unique