2011-01-11 3 views
7

Каждый раз, когда пользователь входит в приложение, я хочу выполнить определенную задачу, скажем, записать время входа в систему. Так что я хотел знать, если по умолчанию у вас запущен крючок? Если да, как я могу заставить свой модуль отвечать на него.Войти в Google Appengine

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

+0

Примите ответ, пожалуйста, или сообщите нам, если ответы недостаточно ясны. –

+0

Извинения за задержку в возвращении к этому. Я не возражаю, отмечая ваши права, но мой фактический вопрос заключался в том, автоматически ли запущен крючок, когда пользователь входит в систему. –

+0

т. Е. Хотя я следую принципу DRY, мне нужно сделать вызов метода внутри каждого из моих обработчиков страниц, можно избежать, если будет вызван крюк. Верный? –

ответ

0

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

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

1

Хотя может быть много точек входа, очень важно, чтобы ваш код авторизации/сессии соответствовал принципу 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)