每次用户登录应用程序时,我都想执行某项任务,比如记录登录时间。所以我想知道默认情况下是否在登录时触发了挂钩?如果是,我该如何让我的模块回应它。
编辑 - 假设应用程序中有多个要登录的入口点。
答案 0 :(得分: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)
答案 1 :(得分:0)
我在GAE上使用Python(因此它可能与Java不同)但是没有看到有关用户登录的此类挂钩的文档。如果您使用其中一个会话管理框架,您可能会得到一些指示为此,但除此之外,我在我的开放页面上做这种房子需要登录。 (对于已经登录的用户几天后返回您的网站,你想做什么...也就是说,你真的想记录登录或访问/会话的开始时间吗?)
如果我想这样做,但有多个目标网页,并且没有使用会话框架, 我会使用memcache快速检查每个页面请求,然后只在新访问开始时写入数据存储区。