Estoy tratando de iniciar sesión desde la interfaz de reacción a través de una solicitud Fetch POST al punto final de Knox, pero no puedo. Puedo iniciar sesión normalmente desde http://localhost:8000/api/login/, así que asumo que algo debe estar mal con mi recuperación, pero no puedo resolverlo. En los documentos de Knox, dice que LoginView solo acepta un cuerpo vacío, por lo que tampoco puedo poner la información de inicio de sesión allí.
Ver (copia pegada de los documentos y agregué BasicAuthentication)
class LoginAPI(KnoxLoginView): permission_classes = (permissions.AllowAny,) authentication_classes = [BasicAuthentication] def post(self, request, format=None): serializer = AuthTokenSerializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] login(request, user) return super(LoginAPI, self).post(request, format=None)Buscar:
const handleSubmit = (event) => { event.preventDefault(); const data = new FormData(event.currentTarget); const credentials = btoa(`${data.get('username')}:${data.get('password')}`); const requestOptions = { method: "POST", headers: { 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json', "Authorization": `Basic ${credentials}` }, body: JSON.stringify({}) } fetch('http://127.0.0.1:8000/api/login/', requestOptions) .then(response => console.log(response)) .catch(error => console.log(error))Agradecería cualquier ayuda en cuanto a lo que estoy haciendo mal aquí