2017-04-10 3 views
0

instructionsから、私はdjangoのリモートユーザー認証を有効にしました(SETTINGS.pyの関連するスニペットを参照)。 Active Directoryはリモート認証に使用されています。Django RemoteUserBackendはユーザー名をクリーニングしていません

# snippet from SETTINGS.py 
MIDDLEWARE_CLASSES = (
    ... 
    'django.contrib.auth.middleware.RemoteUserMiddleware', 
    ... 
) 

AUTHENTICATION_BACKENDS = [ 
    'django.contrib.auth.backends.RemoteUserBackend', 
    'django.contrib.auth.backends.ModelBackend', 
] 

ユーザーは、ユーザーがまだ存在していないので、Djangoはユーザを作成しますが、最初にログインしたときに、予想通り。ただし、ユーザーが作成されるとき、ユーザーのusernameフィールドは<domain>\<username>形式(たとえば、"Domain1\PersonA")です。

usernameからdomainを削除しようとする試みでは、ジャンゴdocs以下、私はRemoteUserBackendクラス内clean_username()方法を更新しました:

def clean_username(self, username): 
    return username.split('\\')[1] 

しかし、新しく、まだusernameが誤っ<domain>\<username>に設定されているuserオブジェクトを作成しましたフォーマット。

私には何が欠けていますか?すなわち `ジャンゴ -

答えて

1

私は` RemoteUserBackend`と同じファイルでは、上記で定義され、 `MyRemoteUserBackend`を置く(これを試してみましたあなたが次に

class MyRemoteUserBackend(RemoteUserBackend): 
    def clean_username(self, username): 
     return username.split('\\')[1] 

AUTHENTICATION_BACKENDS = [ 
    'path.to.MyRemoteUserBackend', 
    'django.contrib.auth.backends.ModelBackend', 
] 
+0

のように行う必要があると思いますモジュール "django.contrib.auth.backends.MyRemoteUserBackend"は "MyRemoteUserBackend"属性/クラスを定義していません – NickBraunagel

+0

"django.contrib.auth.backends.MyRemoteUserBackend"は以下のように定義されています。間違っています。MyRemoteUserBackendを定義したパスを置く必要があります。あなたのapp/mybackend.pyの中にtを入れてください。その後、それは 'app.mybackend.MyRemoteUserBackend' – itzMEonTV

+0

Gotchaになります。なぜカスタムバックエンドを他のdjangoのバックエンドと同じ場所に置くことができないのか分かりません。どうもありがとう。 – NickBraunagel

関連する問題