2016-07-27 9 views
0

account/models.pyカスタム認証モデルを使用しているときにDjango Restブラウズ可能なAPIにログインするにはどうすればよいですか?

from django.contrib.auth.modles import AbstractUser 
from django.db.models.signals import post_save 
from rest_framework.authtoken.models import Token 
from django.db import models 
from django.dispatch import receiver 
from django.conf import settings 

@receiver(post_save, sender=settings.AUTH_USER_MODEL)         
def create_auth_token(sender, instance=None, created=False, **kwargs):    
    if created:                  
     Token.objects.create(user=instance)           

class UserProfile(AbstractUser):              
    gender = models.CharField(max_length=1,default='') 

settings.py

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.TokenAuthentication', 
    ) 
} 

中で次のように私は、カスタム・ユーザー・モデルを持っている...

AUTH_USER_MODEL = "account.UserProfile" 

しかし、私は閲覧可能なAPIにログインしようとしたときに正しいユーザー名とパスワードを使用するように求められ、スーパーユーザーとスタッフの両方のユーザーの資格情報を使用しています。私も前に、私は内蔵のDRFの認証フォームがTokenAuthenticationを使用してではなく、SessionAuthenticationされていないからだと覚えているから、このに走ってきた

[27/Jul/2016 20:41:39] "POST /api-auth/login/ HTTP/1.1" 200 2897 

答えて

0

manage.py runserverコンソールは、このステータスメッセージが表示されます。 DEFAULT_AUTHENTICATION_CLASSESタプルにrest_framework.authentication.SessionAuthenticationを追加してみてください

+0

申し訳ありませんが、動作しますが、ログイン後に 'accounts/profile'にリダイレクトされます。実際に想定されているURL /ページは何ですか? (...)/ api-auth /に行くと、 'api-auth/^ login/$'と 'api-auth/^ logout/$'というパターンだけが与えられます。 –

+0

これは設定 'LOGIN_REDIRECT_URL'ですhttps://docs.djangoproject.com/en/1.9/ref/settings/#login-redirect-url – awwester

+0

複数の認証方法があることに注意してください。ですから、このメソッド(セッション)では 'LOGIN_REDIRECT_URL'にリダイレクトされます。しかし、TokenAuthenticationは異なっており、トークンで応答してリダイレクトしません。ちょうどあなたがTokenAuthenticationを使用するときに同じ場所にリダイレクトしたくないという懸念があった場合に備えて、これを追加すると思っていました。 – awwester

関連する問題