1

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

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

只有雇主可以创建工作实体。只有SkilledPerson可以创建ResumeJobApplication实体。

我该怎么做呢?

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

4

3 回答 3

0

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

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

于 2013-11-26T07:03:02.653 回答
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()
于 2013-11-26T12:12:31.787 回答
0

我会创建一个 user_profile 表来存储他们的 Google 用户 ID,以及 is_employer 和 is_skilled_person 的两个布尔字段,因为在您的站点上,某人总是有可能同时担任这两个角色。(也许我是一个发布工作但也在寻找工作的雇主)

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

于 2013-11-26T02:23:25.910 回答