en primer lugar: esto es no lo mismo que this. The ModelBackend no tiene miembro request
.Solicitud de acceso.sesión de backend.get_user
Deseo acceder a la sesión del usuario actual sin acceso al objeto de solicitud global o su ID de sesión.
¿Por qué? Escribí mi propio backend de autenticación, extendiendo ModelBackend
. En eso tengo la función get_user (self, user_id)
, que se llama con cada solicitud (esto lo hace automáticamente el middleware de autenticación de Django). Desafortunadamente, get_user
no tiene acceso a request
, pero aún así, en mi caso, deseo verificar los datos en la sesión (¿Por qué otra vez? Porque no tengo una base de datos local y obtengo todos los datos de un middleware remoto. ser una forma cómoda de hacer algún tipo de almacenamiento en caché).
Lo siento, sé que este es un hilo viejo, pero estoy viendo el código al que se hace referencia y no veo dónde está accediendo a los datos de solicitud para el usuario que acabo de autenticar. – ThatAintWorking
@RonSmith He actualizado un poco los enlaces. El truco es que todo está hecho por 'RemoteUserMiddleware.process_request' - se pasa un objeto' request' (middleware.py # L40). Comprueba la presencia del encabezado HTTP 'Remote-User' (L50) y si es así pasa esos datos a' RemoteUserBackend.authenticate' (L73) y guarda el resultado en 'request' (L77). En este caso, solo el valor del encabezado HTTP es passeb, pero la idea era que si necesita información de sesión en el back-end de autenticación, podría esconderlo preventivamente desde un middleware. – drdaeman
¿Te importa actualizar tu respuesta con algunas líneas de código como ejemplo? Gracias. –