es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Drf: autenticando sin el campo USERNAME_FIELD

Extendido desde: https://stackoverflow.com/questions/70389502/drf-how-to-simple-jwt-authenticating-without-the-username-field

Estaba tratando de averiguar cómo autenticar a un usuario con un campo que no está configurado como el USERNAME_FIELD y me encontré con algunos problemas, me permite ingresar en los campos de datos correctos, pero nunca autentica.

Estoy usando este fragmento de código de la respuesta a preguntas anteriores:

class MyTokenStudentSerializer(TokenObtainPairSerializer):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['student_id'] = serializers.CharField(required=False)
        # self.fields['password'] = serializers.CharField(write_only=True, required=True)
        self.fields['password'] = PasswordField(trim_whitespace=False)

    username_field = 'student_id'
    auth_fields = ['student_id']


# vista de inicio de sesión extendida desde TokenObtainPairView
class LoginStudentView(TokenObtainPairView):
    permission_classes = (AllowAny,)
    serializer_class = MyTokenStudentSerializer

produce

{
    "detail": "No se encontró ninguna cuenta activa con las credenciales proporcionadas"
}

Cualquier modificación sería muy apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el proceso de autenticación que no puede encontrar una cuenta activa con las credenciales proporcionadas. Esto podría ser causado por varios factores, como valores incorrectos en los campos, cuentas de usuario inactivas o configuraciones incorrectas de autenticación.

    Para resolver el problema, puedes intentar los siguientes pasos:

    1. Verifica nuevamente los campos de MyTokenStudentSerializer y asegúrate de que coincidan con las configuraciones de autenticación en tu proyecto de Django. En particular, asegúrate de que los valores de username_field y auth_fields sean correctos y coincidan con el campo que estás utilizando para la autenticación.
    2. Verifica que la cuenta de usuario con la que estás intentando autenticarte esté activa y tenga las credenciales de autenticación correctas. Puedes verificar esto directamente en el panel de administración de Django o utilizando la consola de Django.

    3. Asegúrate de que las configuraciones de autenticación en tu proyecto de Django estén correctamente configuradas. Esto puede implicar verificar el middleware de autenticación de Django, las configuraciones de backend o cualquier clase de autenticación personalizada que estés utilizando.

    4. Consulta la documentación y los foros de Django REST framework para buscar problemas similares y posibles soluciones. Es posible que encuentres que otros desarrolladores han encontrado problemas similares y hayan publicado soluciones que pueden ayudarte.

    En general, resolver este problema puede requerir un poco de trabajo de detective y depuración, pero con paciencia y persistencia, deberías poder hacer que tu autenticación funcione como se espera. ¡Buena suerte!

Comments are closed.