2010-09-07 90 views
0

我對這款Google應用引擎頗爲陌生。我每天都在學習東西。 我有一個谷歌應用程序引擎論壇。 但我想要的是有私人或受限制的部分。 某些功能應該鎖定在某些訪問控制列表中的某些Google帳戶用戶。應用|受限Google帳戶認證|列出的谷歌帳戶並非全部|

我可以說,只有那些在訪問列表中的用戶才能看到論壇休息,將重定向到「聯繫人到管理員」頁面。

因爲我是新人,我想知道這是可能的。 如果是的話,我該如何實現它? 謝謝, Alok

回答

2

如果您使用內置的用戶API,您可以檢查users.is_current_user_admin()作爲訪問控制機制。管理員可以通過the dashboard進行管理。

如果您需要更詳細的特定於應用程序的授權邏輯,通常您會在數據存儲區中創建一個引用內置UserProperty的用戶模型,並且還包含角色列表或您需要檢查授權的其他任何內容。

+0

感謝您的回覆德魯。 – Alok 2010-09-07 22:35:23

+0

如果您可以告訴我可以在哪裏獲得有關數據存儲的更多文檔以及如何創建用戶模式。 – Alok 2010-09-07 22:37:12

1

跟進德魯的答覆,我使用了類似的系統,在我的應用程序,所以我的服務器代碼類似下面的類定義(這裏爲了清楚而簡化)

class myUser(db.Model): 
    user  = db.UserProperty(required=True) 
    rights  = db.StringProperty(required=True, choices=set(["public", "private"])) 
    created = db.DateTimeProperty(auto_now_add=True) 
    lastaccess = db.DateTimeProperty(auto_now=True) 

,然後我有這樣的代碼在那裏我處理查詢

def checkUserRights(user): 
     q = db.GqlQuery("SELECT * from myUser WHERE user = :1", user) 
     u = q.get() 
     if not u: 
      # create a new 'public access' user if we haven't seen this person before 
      u = myUser(user=user, rights="public") 
     # always update the user record after the source is fetched (updates the lastaccess field) 
     db.put(u) 
     return u.rights 

    rights = checkUser(users.get_current_user()) 
    if isPrivateArea and rights == "private": 
     .... 

這樣,我創建爲每一位旅客,用戶,然後我有一個管理界面更改所選用戶的權利 - 你可以決定,例如,沒有爲每一個記錄訪問者

def checkUserRights(user): 
    q = db.GqlQuery("SELECT * from myUser WHERE user = :1", user) 
    u = q.get() 
    if not u: 
     # grant default public rights to anyone... 
     return "public" 
    # always update the user record after the source is fetched (updates the lastaccess field) 
    db.put(u) 
    return u.rights 

這是當然,一個頁面裏的app.yaml指定「登錄:需要」上