2011-04-01 127 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