2017-09-23 2 views
0

Derzeit erzeuge ich Token manuell, aber ich möchte jwt Tokens verwenden, ich folgte den offiziellen Dokumenten und anderen Referenzen, aber ich bin immer noch nicht in der Lage, das Problem zu lösen.Erhalte DRF-JWT-Token

serializers.py, in denen nach der Authentifizierung Token manuell generiert wird.

class UserLoginSerializer(serializers.ModelSerializer): 
    token = serializers.CharField(allow_blank=True, read_only=True) 

    class Meta: 
     model = User 
     fields = [ 
      'username', 
      'password', 
      'token', 
     ] 
     extra_kwargs = {"password": 
          {"write_only": True} 
         } 

    def validate(self, data): 
     username = data.get('username', None) 
     password = data.get('password', None) 

     try: 
      usern = Account.objects.get(username=username) 
     except ObjectDoesNotExist: 
      raise serializers.ValidationError("User does not exists") 

     if usern.check_password(password): 
      data["token"] = "asdasdasdasd" 
     else: 
      raise serializers.ValidationError("password invalid") 

     return data 

urls.py

from django.conf.urls import url 
from .views import AuthRegister, AuthLogin 
from rest_framework_jwt.views import obtain_jwt_token 

urlpatterns = [ 
    url(r'^register/$', AuthRegister.as_view()), 
    url(r'^login/$', AuthLogin.as_view()), 
    url(r'^api-token-auth/', obtain_jwt_token), 
] 

In Einstellungen I 'rest_framework_jwt.authentication.JSONWebTokenAuthentication',

Ich habe verwendet url(r'^api-token-auth/', obtain_jwt_token) aufgenommen haben, aber ich bin nicht in der Lage, herauszufinden, wie werde ich jwt Token generieren. Bitte helfen Sie mir aus!

Antwort

0

Sie müssen auf dem Endpunkt /api-token-auth/ einen HTTP-POST-Aufruf an die API senden. In diesem Aufruf enthält der Textkörper zwei Schlüssel: username und password.

Beispiel cURL:

curl -X POST -d username=abcd -d password=1234 http://ip:port/api-token-auth/