【问题标题】:How to disable django.contrib.auth completely?如何完全禁用 django.contrib.auth?
【发布时间】:2011-04-01 07:51:19
【问题描述】:

因为我使用的是我自己的身份验证和授权系统(使用我自己的用户/权限模型),我想从Django 完全禁用这个标准应用程序。

我尝试从MIDDLEWARE_CLASSES 和 INSTALLED_APPS,但是当我使用syncdb命令时,默认表 默认身份验证系统附带的仍然是 创建。有没有办法防止这种情况发生?我的主要问题是标准表覆盖了我想用于我自己的身份验证系统的表。

INSTALLED_APPS = (
    'django.contrib.sessions',
    'form_utils',
    'org',
    'auth',
    'entities',
)

我也尝试在应用程序前添加项目包,但没有效果。

我可能忽略了另一个设置吗?其他可能 可能导致这些标准应用程序启用的变量,尽管 我的努力?

我也不使用内置的管理系统,所以我不这么认为 可能是个问题。

附加信息:我最近将 Django 1.2 升级到 1.3。这可能是我的问题的原因吗?

编辑:显然,这个问题是由 Django 1.3 中的更改引起的。相关票在这里:http://code.djangoproject.com/ticket/15735

有什么提示吗?

【问题讨论】:

  • 您是否在 ./manage.py syncdb 之前删除了表?
  • 我做到了,我什至删除了整个数据库以进行测试。它只是不断创建默认的 auth_user 表(而我想使用自己的)。

标签: django django-authentication django-syncdb


【解决方案1】:

我相信认证模块是被RequestContext拉进来的。

默认情况下,设置 TEMPLATE_CONTEXT_PROCESSORS 包括 django.contrib.auth.context_processors.auth。

我没有 django 创建 auth 数据库表的问题,但它在我的上下文和会话中插入了一个 AnonymousUser 对象,即使我已经从我的 INSTALLED_APPS 中删除了 auth 模块和 MIDDLEWARE_CLASSES 设置。

我从 TEMPLATE_CONTEXT_PROCESSORS 中删除了该项目,事情开始按我预期的方式工作。

在您的情况下,从 1.2 升级到 1.3 可能意味着您开始使用基于类的通用视图(这很棒),或者您可能开始使用 RequestContext 而不是普通的上下文字典。无论哪种方式,似乎当 auth 作为上下文处理器给出时,django 的行为就像 auth 在您安装的应用程序中一样,无论您是否真的想要它。

希望对你有帮助。

【讨论】:

  • 我很抱歉这么晚才接受答案,但还是谢谢你:)
  • 我也想删除 Auth 应用程序,删除中间件后我仍然收到错误消息。从设置中的模板预处理器中删除了条目,现在一切顺利!
  • 现在是否有任何更新可以以不同的方式自定义身份验证应用程序?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2019-12-11
  • 2017-10-13
  • 2011-01-10
相关资源
最近更新 更多