Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

324
Views
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?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

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!

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!