postman測試介面
阿新 • • 發佈:2020-10-07
postman測試介面
1.1 測試登入介面,獲取token
http://192.168.56.100:8888/user/login/
'''自定義認證和許可權優先順序更高,可以覆蓋settings.py中的 ''' # 自定義許可權類 permission_classes = (MyPermission,) # 自定義認證類, 自定義會覆蓋全域性配置 authentication_classes =(JSONWebTokenAuthentication,)
1.2 使用獲得的token獲取所有使用者資訊
http://192.168.56.100:8888/user/user/
2.原始碼分析
class JSONWebTokenAPIView(APIView): """ Base API View that various JWT interactions inherit from. """ permission_classes = () authentication_classes = () def get_serializer_context(self): """ Extra context provided to the serializer class. """ return { 'request': self.request, 'view': self, } def get_serializer_class(self): """ Return the class to use for the serializer. Defaults to using `self.serializer_class`. You may want to override this if you need to provide different serializations depending on the incoming request. (Eg. admins get full serialization, others get basic serialization) """ assert self.serializer_class is not None, ( "'%s' should either include a `serializer_class` attribute, " "or override the `get_serializer_class()` method." % self.__class__.__name__) return self.serializer_class def get_serializer(self, *args, **kwargs): """ Return the serializer instance that should be used for validating and deserializing input, and for serializing output. """ serializer_class = self.get_serializer_class() kwargs['context'] = self.get_serializer_context() return serializer_class(*args, **kwargs) def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): user = serializer.object.get('user') or request.user # User表物件 token = serializer.object.get('token') # 獲取到生成的 token response_data = jwt_response_payload_handler(token, user, request) response = Response(response_data) if api_settings.JWT_AUTH_COOKIE: expiration = (datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA) response.set_cookie(api_settings.JWT_AUTH_COOKIE, token, expires=expiration, httponly=True) return response return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)