Skip to content

Always returns me detail: "Invalid token" #268

@aw3s0me

Description

@aw3s0me

I'm trying to get token on client side and send it to server like, but it always gives me the same error: Invalid token:

class ObtainAuthToken(APIView):
    throttle_classes = ()
    permission_classes = ()
    parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
    renderer_classes = (renderers.JSONRenderer,)
    serializer_class = AuthTokenSerializer
    model = Token

    # Accept backend as a parameter and 'auth' for a login / pass
    def post(self, request, backend):
        serializer = self.serializer_class(data=request.DATA)

        if backend == 'auth':
            if serializer.is_valid():
                token, created = Token.objects.get_or_create(user=serializer.object['user'])
                #return Response({'token': token.key})
                return "debug"
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
            #return 'BAD'

        else:
            # Here we call PSA to authenticate like we would if we used PSA on server side.
            user = register_by_access_token(request, backend)
            #user = None

            # If user is active we get or create the REST token and send it back with user data
            if user and user.is_active:
                token, created = Token.objects.get_or_create(user=user)
                return Response({'id': user.id , 'name': user.username, 'userRole': 'user','token': token.key})
                #return "msg"

        @strategy()
        def register_by_access_token(request, backend):
            backend = request.strategy.backend
            auth = get_authorization_header(request).split()

            if not auth or auth[0].lower() != b'token':
                msg = 'No token header provided.'
                return msg

            if len(auth) == 1:
                msg = 'Invalid token header. No credentials provided.'
                return msg

            access_token=auth[1]
            user = backend.do_auth(access_token)
            """
            user = request.user
            user = backend.do_auth(
                access_token=request.GET.get('access_token'),
                user=user.is_authenticated() and user or None
            )
            """
            return user

Edit: wrapped code in three-tics to style it

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions