[pyar] Django - Users auth de api externa

Bruno Geninatti brunogeninatti en gmail.com
Sab Oct 5 19:59:14 -03 2019


El sáb., 5 oct. 2019 a las 19:37, nestor godoy (<licomgodoy en gmail.com>)
escribió:

> Tal ves tenga que crear tu propia clases de authenticantion
> https://www.django-rest-framework.org/api-guide/authentication/#custom-authentication
>
>
> Es la idea que se me ocurre
>
> El sáb., 5 de octubre de 2019 14:19, Augusto <adtononi en gmail.com>
> escribió:
>
>> Buenas, estuve leyendo la documentación para verificar si el usuario está
>> logueado o no. Quería que algunas views sea requisito, así que estaba
>> usando @login_required.
>> El problema es que no tengo una DB de usuarios, estos están en una DB
>> externa a la cual se comunican mediante una API y esta les proporciona un
>> token para poder realizar las consultas.
>> Estuve buscando pero no encontré, como podría verificar que el usuario
>> está logeado?
>>
>> El proceso de login es simple, pide nombre y contraseña. La API recibe
>> esos datos, los manda a la DB externa y devuelve un token.
>>
>> Por el momento, si alguien que no se logueo entra a una ruta de la
>> página, le muestra la view sin la info. Mientras que la idea es que lo
>> obligue a loguearse (acá me falla el @login_required, lo lleva a la página
>> de logueo pero después no lo redirecciona y además le pide que se loguee
>> cada vez que quiere ingresar a otra view, es decir que no queda registro
>> del login anterior)
>>
>> Saludos!
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



Hola Augusto. Asumo que tu consulta es sobre Django y no sobre DRF.
Te recomiendo que para la auth externa hagas un authentication backend [1]

Fijate que hacer el custom authentication backend no es dificil. Tenes que
definir una clase que tiene algunos métodos que son requeridos.
En el método authenticate vos harías la llamada a la API externa: acá tenes
un ejemplo [2]

Después de eso la tenes que agregar al AUTHENTICATION_BACKENDS
<https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-AUTHENTICATION_BACKENDS>
en los settings.
Incluso podes ponerle varios backends para definir multiples pasos de
authenticacion, por ejemplo:
"Primero probá la auth estándar de django, si pasa esa hace una segunda
prueba con este backend que hice yo"
O directamente podes deshabilitar la authenticacion estandar de django y
usar sólo la tuya.

Otra cosa:
Si bien los usuarios y la authenticación se manejan externamente, te
recomiendo que mantengas una lista de los usuarios en la db local. Pensá
que si tenes que relacionar cualquier atributo al usuario en la aplicación,
se te va a complicar si no tenes allguuuna referencia del mismo en la db.

[1] https://docs.djangoproject.com/en/2.2/topics/auth/customizing/
[2]
https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#writing-an-authentication-backend

Espero te sea de ayuda

Saldudos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20191006/d0ddc1f0/attachment.html>


Más información sobre la lista de distribución pyar