2011-01-11 16 views
7

ユーザーがアプリケーションにログインするたびに、ログインの時間を記録するなど、特定のタスクを実行する必要があります。だから私は、フックがデフォルトでログイン時に起動されるかどうかを知りたがっていましたか?はいの場合、私のモジュールがそれに応答する方法を教えてください。Google Appengineのログインフック

を編集します。 - ログインするアプリケーションに複数のエントリポイントがあるとします。

+0

回答を受け入れるか、回答が十分に明確でない場合はお知らせください。 –

+0

この返品の遅れにお詫び申し上げます。私はあなたのことを正しいとフラグを立てていませんが、私の実際の質問は、ユーザーがログインしたときにフックが自動的に起動されるかどうかということでした。 –

+0

すなわちDRYの原則に従っていますが、それぞれのページハンドラ内のメソッドを呼び出す必要があります。フックが呼び出されている場合は避けることができます。正しい? –

答えて

0

私はGAE上でPythonを使用しています(Javaでは異なるかもしれませんが)ログインしているユーザーのためのそのようなフックについてのドキュメントは見ていません。セッション管理フレームワークを使用した場合、それ以外の場合は、ログインを必要とする私のオープニングページ自体にこのような種類の家を置いています。 (ログインしたユーザーが何日後にあなたのサイトに戻ったかについて、何をしたいのですか?つまりログインやセッションの開始時間を本当に記録したいのですか?)

複数のランディングページを使用し、セッションフレームワークを使用しない場合、 私はmemcacheを使用してすべてのページリクエストを素早くチェックし、新しい訪問が開始されたときだけデータストアに書き込みます。

1

複数の入力点があるかもしれませんが、認証/セッションコードがDRYの原則に準拠していることが重要です。

1回/あなたがログインするための単一のコードパスまでなら、あなたはこのような単純な何かをするために、そのコードパスの適切な場所を見つけることができるはずです。また

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

を、 memcacheのクールダウンを使用して、30分ごとに1回だけこれが起こるようにすることができます。

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)