2011-01-11 28 views
7

Bir kullanıcı uygulamada her oturum açtığında, belirli bir görevi gerçekleştirmek istiyorum, örneğin oturum açma zamanını kaydetmek istiyorum. Bu yüzden varsayılan olarak girişte bir çengelin tetiklenip yüklenmediğini öğrenmek istedim? Eğer evetse, modülümü buna nasıl cevap verebilirim?Google'da giriş kancası Appengine

Düzenle - Uygulamada giriş yapmak için birden çok giriş noktası olduğunu varsayalım.

+0

bir cevap lütfen kabul edin veya cevaplar yeterince açık değilse bize bildirin: Bu sadece her, demek 30 dakika kez olur emin olmak için memcache cooldown kullanabilirsiniz. –

+0

Buna dönmede gecikme için özür dilerim. Sizinkileri doğru olarak işaretlemeyi umursamıyorum ama asıl sorum, bir kullanıcı oturum açtığında bir kanca otomatik olarak tetiklenip tetiklenmediğiydi. –

+0

Yani DRY ilkesini takip etsem bile, her sayfa işleyicimin içindeki yönteme bir çağrı yapmam gerekiyor. Çağrılan bir kanca varsa kaçınılabilir. Doğru? –

cevap

0

GAE üzerinde Python kullanıyorum (bu nedenle Java için farklı olabilir) ancak oturum açmak için böyle bir kancayla ilgili hiçbir belge görmedim. Oturum yönetim çerçevelerinden birini kullandıysanız muhtemelen biraz Bunun için gösterge, ama aksi takdirde giriş sayfasını gerektiren giriş sayfasının bu tür bir ev tutmak. (Birkaç gün sonra sitenize geri dönen bir kullanıcı hakkında ne yapmak istiyorsunuz? Yani, gerçekten oturumları veya bir ziyaret/oturum başlama saatini kaydetmek istiyor musunuz ??)

Bunu yapmak istedim, ancak birden çok açılış sayfası ile ve bir oturum çerçevesi kullanmadan, , her sayfa isteğinde hızlı bir kontrol yapmak için memcache kullanırdım ve daha sonra yeni bir ziyaret başladığında veri deposuna yazarım.

1

Birden çok giriş noktası olabilse de, auth/oturum kodunuzun DRY ilkesine uygun olması çok önemlidir.

kez/sen giriş için tek bir kod yoluna aşağı iseniz, bu kadar basit bir şey yapmak bu kod yolunda uygun bir yer bulmak mümkün olmalıdır: Ayrıca

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

,

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)