0

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

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

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

我的问题是:

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

1 回答 1

1

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

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