Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

401
Visualizações
El inicio de sesión funciona en Django Rest Framework pero no en la interfaz

Tengo las siguientes vistas:

login_view :

 @api_view(['POST']) def login_view(request): try: user_data = request.data username = user_data["username"] password = user_data["password"] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) serializer = UserSerializer(user) return Response( { "user":serializer.data, "login": True }) else: return Response(serializers.errors, status=status.HTTP_400_BAD_REQUEST) except: raise Http404

Cerrar sesión_ver :

 @api_view(['POST']) def logout_view(request): if request.user.is_authenticated: logout(request) return Response(status=status.HTTP_200_OK) else: return Response(status=status.HTTP_403_FORBIDDEN)

y buscar la función en la interfaz :

 const onSubmit = () => { fetch('http://127.0.0.1:8000/api/login/',{ method:"POST", headers: { 'Accept': 'application/json, text/plain', 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({ "username": values.Username, "password": values.Password }) }).then((response) => {response.json().then(data => { if(response.ok){ setError(''); console.log(data); } else{ setError(''); setError('Invalid Username or Password'); } })}); };

y el siguiente problema:

Cuando intento iniciar sesión en la interfaz, obtengo una respuesta esperada:

 { user: {id: 4, username: 'Tester_1', date_joined: '2021-12-02T22:38:29.323393Z', trust_index: 0} login: true }

pero mi usuario no ha iniciado sesión en Rest Framework y no puedo usar la vista de cierre de sesión en Frontend: después de iniciar sesión en Frontend

Cuando uso el panel de Rest Framework para iniciar sesión, todo funciona bien, el usuario inicia sesión y puedo usar la vista de cierre de sesión: Después de iniciar sesión en Rest Framework

He estado luchando con esto por un tiempo. ¿Alguna idea de cómo resolver este problema?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No conozco su código global, pero parece que está tratando de crear un sistema de inicio de sesión/autenticación basado en sesión, trayendo el enfoque del panel web drf generado automáticamente a su frente. En esta estructura separada (anverso y reverso) este no es el mejor enfoque, al menos construyes una estructura extraña donde Django encapsula tu frente y administra sesiones, etc.

Una forma probablemente mejor es usar la generación/autenticación de tokens jwt. Donde se autentica (desde el frente) usando un usuario y contraseña pero recibe (desde atrás) un token que debe almacenar localmente (almacenamiento local, para emular una sesión).

En cada solicitud, pasa el token en el encabezado y, si todo está bien (token válido), drf hace las cosas.

Uso JWT simple ( https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ ). Realmente simple

Aquí hay un ejemplo de urls.py para puntos finales de autenticación:

 from django.urls import include, path from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView website_v1 = 'website/v1/' urlpatterns = [ path(f'{website_v1}login/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path(f'{website_v1}login/refresh/', TokenRefreshView.as_view(), name='token_refresh'), ]

Y al frente, Axios ( https://axios-http.com/docs/intro ) es una buena biblioteca js para automatizar el paso del token en la obtención de datos mediante interceptores.

¡Buena suerte!

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda