2011-01-11 14 views
7

Cada vez que un usuario inicia sesión en la aplicación, quiero realizar una determinada tarea, por ejemplo, registrar la hora de inicio de sesión. Entonces, ¿quería saber si un gancho se dispara al iniciar sesión por defecto? En caso afirmativo, ¿cómo puedo hacer que mi módulo responda?Conexión de gancho en Google Appengine

Editar - Supongamos que hay múltiples puntos de entrada en la aplicación para iniciar sesión.

+0

aceptar una respuesta por favor, o hacernos saber si las respuestas no son lo suficientemente claras. –

+0

Disculpas por la demora en volver a este. No me importa marcar el suyo como correcto, pero mi pregunta real era si un enganche se dispara automáticamente cuando un usuario inicia sesión. –

+0

es decir. Aunque sigo el principio DRY, necesito hacer una llamada al método dentro de cada uno de mis manejadores de página que se puede evitar si se llama un gancho. ¿Correcto? –

Respuesta

0

Estoy usando Python en GAE (por lo que puede ser diferente para Java) pero no he visto documentación sobre dicho enganche para un usuario que inicia sesión. Si usaba uno de los marcos de gestión de sesiones, probablemente obtendría algunos indicación para eso, pero de lo contrario hago este tipo de mantenimiento en mi propia página de inicio que requiere iniciar sesión. (¿Qué desea hacer con un usuario ya conectado que vuelve a su sitio unos días después ... es decir, ¿realmente desea registrar los inicios de sesión o la hora de inicio de una visita/sesión?)

Si quisiera hacer esto pero con varias páginas de aterrizaje, y sin utilizar un marco de sesión, Usaría Memcache para verificar rápidamente cada solicitud de página y luego solo escribir en el almacén de datos cuando comience una nueva visita.

1

Si bien puede haber múltiples puntos de entrada, es crucial que su código de autenticación/sesión se ajuste al principio DRY.

Una vez/si estás abajo a una sola ruta de código para acceder al sistema, usted debe ser capaz de encontrar un lugar apropiado en esa ruta de código para hacer algo tan simple como esto:

user.last_login = time 
user.num_logins++ 
user.save() 

Además, se puede utilizar un tiempo de reutilización memcache para asegurarse de que esto sólo ocurre una vez cada, por ejemplo, 30 minutos:

cooldown_memcache_key = "login_cooldown_%s" % user.id 
cooldown = memcache.get(cooldown_memcache_key) 
if cooldown is None: 
    user.last_login = time 
    user.num_logins++ 
    user.save() 
    memcache.add(cooldown_key, True, 1800) 
Cuestiones relacionadas