2011-04-01 187 views
5

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

我试着从MIDDLEWARE_CLASSESINSTALLED_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

任何提示?

+1

您是否在./manage.py syncdb之前删除了表? – DTing 2011-04-01 07:53:34

+0

我做到了,我甚至放弃了整个数据库用于测试目的。它只是不断创建默认的auth_user表(虽然我想用我自己的)。 – 2011-04-01 08:57:34

回答

4

我相信认证模块正在被RequestContext拉入。

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

我没有创建auth数据库表的django问题,但是它将'AnonymousUser'对象插入我的上下文和我的会话下的'用户'键,即使我已从我的INSTALLED_APPS和MIDDLEWARE_CLASSES设置。

我从TEMPLATE_CONTEXT_PROCESSORS中删除了这个项目,并且事情开始按我期待的方式工作。

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

我希望这是协助。

+0

我很抱歉接受这么晚的答案,但还是谢谢你:) – 2012-07-05 15:59:34

+0

我想删除Auth应用程序以及删除中间件后,我仍然收到错误。在设置中删除了模板预处理器中的条目,现在一切顺利! – 2015-12-14 11:08:37