2011-06-05 35 views
0

我是谷歌應用引擎中的新成員,所以我的問題可能有點愚蠢或微不足道,但無論如何...對於每個用戶(對於每個谷歌acc),我有一個實體數據存儲。因此,當新用戶登錄時,我想將他添加到數據庫中。 我使用:使用Google帳戶登錄後的操作

- url: /.* 
    login: required 

爲了確保用戶登錄與他的谷歌ACC。問題是有人從子頁面登錄(blabla.appspot.com/something),然後登錄後,他將被重定向到blabla.appspot.com/something,並且我必須在Request handler中驗證「something」,如果當前用戶已經存儲在數據庫中。如何在不向每個請求處理程序添加相同代碼的情況下執行此操作也許可以在登錄後重定向到主頁面或類似的東西?

+1

可能發佈一些代碼嗎?你看着寫一個裝飾者。 – 2011-06-05 10:28:53

+0

問問你自己:有多少網站你曾經訪問過,立即將你發送到登錄頁面,而不是顯示一些登錄鏈接/表單的介紹頁面?使用login:webapp中的所有URL都是必需的,除非你正在做某種內聯網事情,否則可能是一個壞主意。通過鏈接登錄也會使重定向到註冊頁面不那麼難看;它無需使用註冊邏輯來修飾應用程序中的每個處理程序。 – geoffspear 2011-06-05 13:21:59

回答

1

這裏有一個簡單的方法:如果您創建的webapp.RequestHandler一個子類,你的處理程序將隨後的子類,你可以爲它提供用於獲取或創建給出users.get_current_user().user_id()(或.user_email()一個UserInfo對象的便捷方法,如果這就是你喜歡什麼用作鑰匙)。您的處理程序然後在其get()post()方法中調用便捷方法。

class MyRequestHandler(webapp.RequestHandler): 
    def setup_user_info(self): 
    # left as an exercise 
    self.user_info = user_info 

然後

class MyHandler(MyRequestHandler): 
    def get(self): 
    self.setup_user_info() 
    ... 
+1

更好的是,在調用'super(MyRequestHandler,self).initialize(request,response)'''''''initialize'後,把'setup_user_info'調用。或者,只需讓返回當前用戶的getter進行初始化即可。 – 2011-06-06 00:19:38

+0

確實。更好。 – 2011-06-06 04:47:26

相關問題