我正在接受Udacity的Web开发课程,该课程使用Google AppEngine和Python。
我想设置特定的用户角色及其分配的权限。例如,我可能有两个用户角色,Employer和SkilledPerson,并按如下方式分配其权限:
只有雇主可以创建作业实体。 只有 SkilledPerson 可以创建恢复和 JobApplication 实体。
我该怎么做?
如何定义这些用户角色? 如何为特定角色分配一组权限? 如何允许用户注册为特定角色(雇主或SkilledPerson)?
答案 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()