上下文中的用户和角色

时间:2009-06-04 04:41:58

标签: google-app-engine roles

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

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

由于App Engine数据存储区中没有连接,因此为了确保检查权限的查询速度很快(例如,确定是否存在链接的查询),可能需要对典型的SQL数据库进行较少规范化的操作。将显示)。

我的问题是:

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

1 个答案:

答案 0 :(得分:1)

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

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