使用Google App Engine和Python的基于角色的安全性
我想问一下,在使用Google App Engine和Python时,处理基于角色的安全性通常是怎么做的?
在app.yaml文件中,有一个“login”部分,但可选的值只有“admin”和“required”。
你们通常是怎么处理基于角色的安全性的呢?
- 创建一个模型,里面有两个表:角色表(Roles)和用户角色表(UserRoles)
- 为角色表导入一些值
- 手动把用户添加到用户角色表中
- 检查用户是否在正确的角色组里
如果还有其他想法或者其他处理基于角色的安全性的方法,请告诉我们!
1 个回答
4
我会通过给用户模型添加一个角色列表来实现这个功能。这个列表里包含了某个用户所拥有的所有角色。这样,如果你想知道某个用户是否属于某个角色(我想这是最常见的操作),你只需要快速检查一下就可以了。
你可以直接把角色名称放到列表里,作为字符串,也可以再加一层间接关系,创建一个单独的实体来说明角色的详细信息,这样以后修改这些信息会更方便。不过,这样做会增加运行时的开销,因为你需要额外的请求来获取角色的详细信息。
这种方法的缺点是,如果你想把所有用户从某个角色中移除,或者进行其他全局操作时,就会比较麻烦。我想你可以把角色标记为“已删除”,但这样的话,你的用户模型里还是会有很多杂乱的数据,直到你手动清理掉它们。所以我很想听听其他人有什么建议。