2009-09-19 58 views
5

我想问一下使用Google App Engine和Python处理基于角色的安全性的常见方式是什么?Google App Engine和Python基于角色的安全性

在app.yaml中,有“登录”部分,但可用值仅为“admin”和“required”。

您通常如何处理基于角色的安全性?

  • 两个表创建模型:角色和的UserRole
  • 的角色表进口值
  • 手动添加用户到的UserRole
  • 检查用户是否是一个正确的角色组

任何其他想法或任何其他基于角色的安全方法,请让我们知道!

回答

4

我会为代表用户的模型添加一个ListProperty角色来做到这一点。该列表包含给定用户所属的任何角色。这样,如果你想知道给定的用户是否属于给定的角色(我期望,最常见的操作),它是一个快速的成员资格测试。

您可以将角色名称作为字符串直接放入列表中,也可以向另一个实体添加一个间接层以指定角色的详细信息,以便稍后更改其详细信息。但是,这有一个额外的RPC的运行时间成本来获取有关角色的详细信息。

如果您想从给定角色中删除所有用户或执行任何其他类型的全局操作,则此方法的缺点在于此。我想你可以将一个角色标记为“已删除”,但是你仍然有数据凌乱了你的所有用户模型,直到你手动清除它们。所以我很好奇听到别人的建议。

+0

+1。如果要修改具有角色的所有用户,则可以对listproperty执行查询,就像查找具有该角色的所有用户的常规属性一样。 – 2009-09-19 15:26:29

+0

所以这意味着没有专门的方法来处理来自GAE和Python的基于角色的安全性?我们仍然需要手动处理它? – 2009-09-19 16:56:32

+0

正确 - 尽管我不确定“专用”解决方案甚至看起来像什么,因为人们拥有各种各样的身份验证需求。 – 2009-09-20 11:08:24