django el suministro de credenciales de inicio de sesión en cualquier url de vista

StackOverflow https://stackoverflow.com//questions/12665721

  •  11-12-2019
  •  | 
  •  

Pregunta

¿Hay alguna forma en django para realizar el inicio de sesión usando las credenciales proporcionadas mientras que para acceder a cualquier punto de vista en la aplicación?

Mi motivación es la disponibilidad de vigilancia del uso de un servicio, tales como Pingdom.La mayoría de las direcciones url quiero validado su disponibilidad están decoradas con un @login_required lo que hace imposible el acceso a menos que yo haya iniciado anteriormente.

Mi idea de la solución será una manera de acceder a mi punto de vista, mientras que el suministro de credenciales en los parámetros GET o POST.Otra alternativa podría ser, probablemente, un tiempo de actividad del sitio servicio de vigilancia que soporta el registro y la adquisición de una sesión antes de acceder a la URL en cuestión.

Actualización

Gracias a @Filip Dupanović la dirección y el código de aquí mi sencillo trabajo de middleware se parece a esto:

from django.contrib.auth import authenticate, login

class AuthenticationEverywhereMiddleware(object):
    """
    Middleware to allow logging in by supplying login credentials in any URL
    """

    def process_request(self, request):
        if (request.GET.get('authenticateEverywhere','') == 'GET'):
            username = request.GET['username']
            password = request.GET['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    login(request, user)

He añadido el parámetro de disparo authenticateEverywhere para evitar posibles enfrentamientos con vistas a que pueda utilizar username o password los parámetros.

¿Fue útil?

Solución

Usted seguramente puede!Tendrás que escribir una costumbre middleware de la clase que implementa una costumbre process_request método en el que usted será capaz de inspeccionar el objeto de solicitud, obtener las credenciales y firmar el usuario antes de que la solicitud se dirige a un punto de vista que es decorado con login_required.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top