2011-07-25 4 views
2

私はDjangoには比較的新しく、Djangoのコア認証モジュールをいくつか変更しようとしています。私はdjango.contrib.auth.backends.pyModelBackendクラスのauthenticateメソッドへの電子メールアドレスに基づいてユーザーを認証するいくつかの新しいコードを追加しましたが、設定に以下を追加してもこの新しいコードは効果がないようです。実際にDjangoの認証モジュールを改訂するにはどうすればよいですか?

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', 
) 

私は全体authenticateメソッドを削除し、まだうまく私のDjangoアプリケーションにログインすることができました。私がここで間違っているところは誰でも知っていますし、Djangoの中核認証システムを改訂するのが最善の方法でしょうか?

答えて

2

django.contrib.auth.backends.ModelBackendバックエンドをモジュールにインポートし、サブクラス化して、処理中のauthenticateをオーバーライドしてから、サブクラスにAUTHENTICATION_BACKENDSを指定する必要があります。マニュアルのwriting your own authentication backendのセクションを参照してください。実際、ページ全体を読むべきです。

django.contribの内容を直接変更しないでください。それは次のアップグレードで吹き飛ばされます。それをサブクラス化するか、それにフックする方法を探します。

私はあなたが物事を引き裂くときに認証が働いたことに驚くことはありません。 Djangoの認証はアドオンです。 Djangoはそれがなくても動作する必要があるので、デフォルトは「許可」になります。

+0

@Mike DeSimoneに感謝します。迅速なフォローアップの質問、このアプローチの賛否両論は何ですか?私は自分のログインビューを書いていますか? –

+0

最大のプロは、すべてのコードを書く必要はありません。独自のビューを作成する必要がある場合や、別のテンプレートが必要な場合は、自分自身にお尋ねください。ログインページのテンプレートを上書きし、Djangoに使用させることができます。 –

関連する問題