代码之家  ›  专栏  ›  技术社区  ›  Community wiki

上下文中的用户和角色

  •  0
  • Community wiki  · 技术社区  · 2 年前

    我正在尝试了解如何为我正在编写的应用程序实现用户/角色关系。持久层是GoogleAppEngine的数据存储,它对可以做的事情施加了一些有趣的(但通常是有益的)约束。任何想法都值得赞赏。

    把事情具体化可能会有所帮助。我希望有组织、用户、测试内容和测试管理(已进行测试的记录)。用户可以扮演参与者(考生)、测试材料贡献者或两者兼有的角色。用户也可以是零个或多个组织的成员。在参与者的角色中,用户可以查看他或她以前参加的测试的管理情况。如果另一个参与者已授予用户授权,则用户还可以查看该参与者的测试管理。用户可以查看已公开的测试材料,并且在组织授权用户进行测试的特定管理期间,他或她可以作为参与者查看受限制的内容。作为组织的成员,用户可以以贡献者的身份查看受限制的内容,他或她可能也无法编辑内容。每个组织都应该有一个或多个管理员,他们可以确定成员是否可以查看和编辑内容,并确定谁拥有管理员权限。还应该有一个或多个应用程序范围的超级用户可以排除故障并解决问题。组织成员可以查看相关参与者授权他们查看的测试管理,如果没有授权,他们可以查看匿名数据。在任何其他情况下,用户都无法看到其他用户的测试结果。

    由于应用程序引擎数据存储中没有联接,因此可能有必要对典型SQL数据库进行比通常更少的规范化处理,以确保检查权限的查询是快速的(例如,确定是否显示链接的查询)。

    我的问题是:

    1. 我该如何推进?我应该花很多时间来构建正确的模型,还是可以迭代几次,然后逐渐增加复杂性?
    2. 有人对这种情况下如何分手有一些大致的想法吗?
    3. 是否有任何GAE库以与这种安排兼容的方式处理角色?
    1 回复  |  直到 2 年前
        1
  •  1
  •   Ross Light    16 年前

    我不太确定我是否正确理解了你的问题,但我会尽力回答:

    1. 我总是觉得迭代编程更容易测试和编写,所以这是我的建议。
    2. 我认为你已经正确地划分了必要的实体,但我认为你需要一个额外的实体: Permission ,定义了每个角色可以做什么,每个角色有零个或更多 准许 链接。只需记住,对于GAE中的每个多对多关系,您需要定义一个键列表,或者定义一个单独的实体作为中介。
    3. 我不知道,但你可能想研究基于Django的角色系统,并尝试调整基于Djano的解决方案(因为Django存在的时间更长)。你可以很好地将Django破解到GAE App Engine Patch
    推荐文章