인증을 위해 django-rest-framework-jwt를 구현하려고합니다. 나는 jwt 튜토리얼에서 말한 모든 것을했다. (설정, URL, 컬 테스트 추가). 탐색 가능한 API에서 127.0.0.1:8000/api/auth/token/
을 사용하여 성공적으로 토큰을 얻었습니다.로그인 프로세스에서 rest_framework_jwt 토큰을 생성하는 방법
하지만 로그인 프로세스에서 토큰을 생성하는 방법에 대해서는 알지 못합니다. 내 생각 엔 LoginSerializer에서 생성하는 것일까? (아니면 내가 개념을 오해!)
가 여기에 내가 가진 무엇 :
# settings.py
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
# project/urls.py
url(r'^api/auth/token/', obtain_jwt_token),
로그인 시리얼 라이저와보기 :
class UserLoginSerializer(ModelSerializer):
token = CharField(allow_blank=True, read_only=True)
class Meta:
model = User
fields = ('username', 'password', 'token')
def validate(self, data):
username = data.get('username',None)
password = data['password']
user = authenticate(username=username, password=password)
if not user or not user.is_active:
raise ValidationError("Invalid username/password.")
# generate jwt token ??
# data['token'] = generated jwt token??
return data
class UserLoginAPIView(APIView):
permission_classes = [AllowAny]
serializer_class = UserLoginSerializer
def post(self, request, *args, **kwargs):
data = request.data
serializer = UserLoginSerializer(data=data)
if serializer.is_valid(raise_exception=True):
new_data = serializer.data
return Response(new_data, status=HTTP_200_OK)
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
그래서 내가 무엇을해야합니까를?