2017-11-06 22 views
0

トークン認証に問題があります。 私はdjangoをサーバーに組み込んだ状態で私のdjangoアプリケーションを実行します。django restframework token "無効なトークン"で認証が失敗する

$python manage.py runserver 

私のアプリのurls.py

from rest_framework_jwt.views import obtain_jwt_token 
from .views import LectureCreateView 

urlpatterns = [ 
    ... 
    url(r'^api/user_auth/$', obtain_jwt_token), 
    url(r'^api/lecture/create/$', LectureCreateView.as_view()), 
] 

私のアプリのmodels.py

from rest_framework.authentication import TokenAuthentication 
from rest_framework.permissions import IsAuthenticated 

class LectureStartView(APIView): 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (TokenAuthentication,) 

    def post(self, request): 
     ... 

とsettings.py

... 
INSTALLED_APPS = [ 
... 

    # Rest framework 
    'rest_framework', 
    'rest_framework.authtoken', 


    'myApp', 
] 
... 


REST_FRAMEWORK = { 
    # other settings... 

    'DEFAULT_AUTHENTICATION_CLASSES': [ 
     'rest_framework.authentication.TokenAuthentication', 
    ], 
    'DEFAULT_PERMISSION_CLASSES': [ 
     'rest_framework.permissions.IsAuthenticated', 
    ], 
} 

私はトークンでのauthたいです。 トークンを正常に発行しました。

POST '... API/USER_AUTH /' { "ユーザー名": "テスト"、 "パスワード": "blahbalh123" }

{ 
     "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjIwMTMyMzA2Iiwib3JpZ19pYXQiOjE1MDk5NzA5NjcsInVzZXJfaWQiOjMsImVtYWlsIjoiaW50ZXJydXBpbmdAbmF2ZXIuY29tIiwiZXhwIjoxNTA5OTcxNTY3fQ.acwqAP4sBPZWYPC0GfgL3AZarNz4Opb_5P4RewZJYrI" 
} 

が、私はトークン

で認証に失敗

要求:

POST ...api/lecture/create/ HTTP/1.1 
Host: 127.0.0.1:8000 
Authorization: Token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IjIwMTMyMzA2Iiwib3JpZ19pYXQiOjE1MDk5NzA5NjcsInVzZXJfaWQiOjMsImVtYWlsIjoiaW50ZXJydXBpbmdAbmF2ZXIuY29tIiwiZXhwIjoxNTA5OTcxNTY3fQ.acwqAP4sBPZWYPC0GfgL3AZarNz4Opb_5P4RewZJYrI 

応答:

Status: 401 Unauthorized 

Allow →GET, POST, HEAD, OPTIONS 
Content-Length →27 
Content-Type →application/json 
Date →Mon, 06 Nov 2017 12:59:17 GMT 
Server →WSGIServer/0.1 Python/2.7.13 
Vary →Accept 
WWW-Authenticate →Token 
X-Frame-Options →SAMEORIGIN 

{ 
    "detail": "Invalid token." 
} 

私のコードで何が問題になっていますか? 英語のスキルを残念に思っています。

答えて

1

django-rest-frameworkとREST framework JWTからトークンを混ぜていると思います。 DJRのドキュメンテーションで

は言う:

from rest_framework.authtoken import views urlpatterns += [ url(r'^api-token-auth/', views.obtain_auth_token) ]

あなたがして、あなたのコードを置き換える必要があります。私はそれはあなたを助けることを願って

from rest_framework.authtoken import views from .views import LectureCreateView urlpatterns = [ ... url(r'^api/user_auth/$', views.obtain_auth_token), url(r'^api/lecture/create/$', LectureCreateView.as_view()), ]

関連する問題