2010-09-07 87 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指定“登录:需要”上