は、私は私のカスタム認証をテストするためにhttpieを使用していジャンゴ:「non_field_errors」:?「提供された資格情報を使用してログインすることができません
http POST http://127.0.0.1:8000/api-token-auth/ username='username1' password='Password123'
私はAbstractUser
を使用してカスタム認証オブジェクトを作成しました。
はTokenAuthenticationを使用して、私はドキュメントに続いて、私のREST_FRAMEWORK
設定で私のカスタムTokenAuthenticationを追加しました:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'regis.models.CustomAuthentication',
)
}
インストールしたアプリにrest_framework.authtoken
を追加しました。
次のように私のAUTHENTICATION_BACKEND
がある:
AUTHENTICATION_BACKENDS = [ 'regis.models.CustomAuthentication' ]
そして、ここでは私のカスタム認証クラスです:
class CustomAuthentication(authentication.TokenAuthentication):
def authenticate(self, request):
username = request.META.get('X_USERNAME')
print(username)
user_model = get_user_model()
if not username:
return None
try:
user = user_model.objects.get(username=username)
except User.DoesNotExist:
raise exceptions.AuthenticationFailed('No such user')
return (user, None)
はurls.py:
urlpatterns += [
url(r'^api-token-auth/', views.obtain_auth_token),
]
私はかなり、次のよDRFドキュメント(http://www.django-rest-framework.org/api-guide/authentication/#custom-authentication)。これを解決するために必要な追加情報がある場合は、私に知らせてください、私は更新します。私が逃していることについての助けは素晴らしいだろう。
追加する:私はカスタムユーザーがいる場合、カスタム認証システムを作成する必要がありますか?
UPDATE:
私は上記のクラスを削除し、ちょうど私REST_FRAMEWORK設定でrest_framework.authentication.TokenAuthentication
を追加しました。私はまだ私のユーザーをフェッチするカスタム認証を使用しています。
それは、この(それをフォーマットするつもりはないSO VIMからコードをフォーマットで吸う。)のようになります。私はそのコードを作成するには、このDjangoのドキュメントを使用
class CustomAuthentication(object):
def authenticate(self, email=None, password=None):
User = get_user_model()
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
return None
if user.check_password(password):
return user
return None
def get_user(self, user_id):
try:
user_model = get_user_model()
user = user_model.objects.get(pk=user_id)
except User.DoesNotExist:
return None
:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/
あなたの好奇心に答えるには:いいえ、カスタムユーザーを使用している場合、カスタム認証は必要ありません。職場で使用するビルドにはカスタムユーザがあり、Djangoに同梱されているデフォルトのModelBackendを使用します。 :) – Neelik
@Neelik ayyyeeは仕事をそこに繋ぐ! –
会社が少し成長したときに:P私たちは今でもまだ少しローカルグループです。 – Neelik