【问题标题】:Google AppEngine: Setting up user roles and permissionsGoogle AppEngine:设置用户角色和权限
【发布时间】:2013-11-28 02:42:23
【问题描述】:

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

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

只有 Employers 可以创建 Job 实体。 只有 SkilledPerson 可以创建 Resume 和 JobApplication 实体。

我该怎么做?

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

【问题讨论】:

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


    【解决方案1】:

    制作模型

    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()
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        如果您认为拥有多个角色并且一个用户只能是一个角色,我会将其设为一个包含角色名称的字符串字段,例如“employer”、“admin”、“job seeker”等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-25
          • 2016-01-19
          • 2021-07-26
          • 2020-10-20
          • 1970-01-01
          • 2018-09-19
          • 2021-04-09
          • 2020-12-05
          相关资源
          最近更新 更多