Google AppEngine:设置用户角色和权限

时间:2013-11-14 21:21:38

标签: python google-app-engine permissions roles app-engine-ndb

我正在接受Udacity的Web开发课程,该课程使用Google AppEngine和Python。

我想设置特定的用户角色及其分配的权限。例如,我可能有两个用户角色,Employer和SkilledPerson,并按如下方式分配其权限:

只有雇主可以创建作业实体。 只有 SkilledPerson 可以创建恢复 JobApplication 实体。

我该怎么做?

如何定义这些用户角色? 如何为特定角色分配一组权限? 如何允许用户注册为特定角色(雇主或SkilledPerson)?

3 个答案:

答案 0 :(得分:0)

我创建了一个user_profile表,用于存储他们的Google用户ID,以及两个用于is_employer和is_skilled_person的布尔字段,因为在您的网站上总有可能有人成为这两个角色。 (也许我是雇主找工作但也找工作)

如果您认为有多个角色且用户只能是一个角色,我会将其设置为一个字符串字段,其中包含“雇主”,“管理员”,“求职者”等角色名称。

答案 1 :(得分:0)

您必须自己管理user_profile。在您的user_profile中,您可以存储用户ID,例如您想要的电子邮件地址或Google用户ID。在此实体中添加角色数组,您可以在其中存储此用户的所有角色,并使用装饰器管理访问权限。

例如,作为雇主的用户将在其角色中拥有“EMPLOYERS”,并使用@isEmployer装饰器管理对作业创建处理程序的访问权限。 使用此解决方案,您可以为您的用户分配许多角色,例如“ADMIN”。

答案 2 :(得分:0)

制作模型

class Role(ndb.Model):
    name = ndb.StringProperty()

class UserRole(ndb.Model):
    user = ndb.UserProperty()
    roles = ndb.KeyProperty(kind=Role,repeated=True)

让装饰者检查用户角色

创建作业之前

@check_user_in_role('Employees')
def create_job():
    do_some_thing()