【问题标题】:Users and roles in context上下文中的用户和角色
【发布时间】:2010-10-31 05:20:26
【问题描述】:

我试图了解如何为我正在编写的应用程序实现用户/角色关系。持久层是 Google App Engine 的数据存储,它对可以做什么设置了一些有趣的(但通常是有益的)限制。任何想法表示赞赏。

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

由于 App Engine 数据存储区中没有连接,因此对于典型的 SQL 数据库,可能有必要使事情的标准化程度低于通常情况,以确保检查权限的查询快速(例如,确定链接是否将被显示)。

我的问题是:

  1. 我该如何继续前进?我应该在前期花费大量时间以使模型正确,还是可以迭代多次并逐渐增加复杂性?
  2. 是否有人对在这种情况下如何拆分有一些一般性的想法?
  3. 是否有任何 GAE 库以与这种安排兼容的方式处理角色?

【问题讨论】:

    标签: google-app-engine roles


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您提供有用的答案。 Re 1,我绝对更喜欢替代方法的迭代方法。但是对于数据库,我的经历有点不同,我的感觉是,把更多的想法放在前面可能会很好。而且我注意到 GAE 数据存储比 SQL 数据库更难重构。所以我希望了解是否有做过类似事情的人知道要达到什么样的平衡。 Re 3,我使用的是app-engine-patch,但我认为Django没有中间组织(或帐户)的概念。
    • 你说得对,GAE(以及一般的数据库)使重构变得困难。通常选择的路径是只做添加列的数据重构,从不删除。这可能会更容易一些,因为 GAE 现在有数据上传功能,但这种问题是我离开 GAE 购买付费服务器空间的原因之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多