Хук входа в Google Appengine - PullRequest
7 голосов
/ 11 января 2011

Каждый раз, когда пользователь входит в приложение, я хочу выполнить определенную задачу, скажем, записать время входа в систему. Итак, я хотел бы знать, запускается ли ловушка при входе в систему по умолчанию? Если да, как я могу заставить мой модуль отвечать на него.

Редактировать - Предположим, что в приложении имеется несколько точек входа для входа в систему.

Ответы [ 2 ]

1 голос
/ 13 января 2011

Хотя может быть несколько точек входа, важно, чтобы ваш код авторизации / сеанса соответствовал принципу DRY.

Однажды / если вы используете единый путь к коду для входа в систему, вы сможете найти подходящее место в этом пути к коду, чтобы сделать что-то простое:

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

Кроме того, вы можете использовать кулдаун memcache, чтобы убедиться, что это происходит только один раз каждые, скажем, 30 минут:

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)
0 голосов
/ 12 января 2011

Я использую Python для GAE (поэтому он может отличаться для Java), но не видел документации о такой ловушке для входа пользователя в систему. Если вы используете одну из сред управления сессиями, вы, вероятно, получите некоторое указаниедля этого, но в остальном я веду такую ​​домашнюю работу на своей начальной странице, которая требует входа в систему.(Что вы хотите сделать с уже вошедшим в систему пользователем, возвращающимся на ваш сайт через несколько дней ... то есть вы действительно хотите записать логины или время начала посещения / сеанса ??)

Если бы я хотел сделать это, но с несколькими целевыми страницами и без использования инфраструктуры сеанса, я бы использовал memcache для быстрой проверки каждого запроса страницы, а затем записывал в хранилище данных только при начале нового посещения.

...