使用 Google App Engine 和 Python 实现基于角色的安全性
我想问一下使用 Google App Engine、Python 处理基于角色的安全性的常用方法是什么?
在 app.yaml 中,有“login”部分,但可用值只有“admin”和“required”。
您通常如何处理基于角色的安全性?
- 使用两个表创建模型: Roles 和 UserRoles
- 导入 Roles 表的值
- 手动将 User 添加到 UserRoles
- 检查用户是否位于正确的 Roles 组
对于基于角色的安全性有任何其他想法或任何其他方法,请告诉我们!
I would like to ask what is the common way for handling role-based security with Google App Engine, Python?
In the app.yaml, there is the "login" section, but available values are only "admin" and "required".
How do you normally handle role-based security?
- Create the model with two tables: Roles and UserRoles
- Import values for Roles table
- Manually add User to UserRoles
- Check if user is in the right Roles group
Any other idea or any other method for role-based security, please let us know!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将通过将角色的 ListProperty 添加到代表用户的模型来实现此目的。该列表包含给定用户所属的任何角色。这样,如果您想知道给定用户是否属于给定角色(我期望,最常见的操作),这是一个快速的成员资格测试。
您可以将角色名称作为字符串直接放入列表中,或者向另一个实体添加一个间接层来指定有关角色的详细信息,以便以后可以轻松更改详细信息。但是,这需要额外的 RPC 来获取有关角色的详细信息,从而产生运行时成本。
如果您想要从给定角色中删除所有用户或执行任何其他类型的全局操作,则此方法的缺点就会出现。我想您可以将角色标记为“已删除”,但是数据仍然会弄乱所有用户模型,直到您手动清理它们。所以我很想听听其他人的建议。
I would do this by adding a ListProperty for roles to the model representing users. The list contains any roles a given user belongs to. This way if you want to know whether a given user belongs to a given role (I expect, the most common operation), it is a fast membership test.
You could put the role names directly into the lists as strings or add a layer of indirection to another entity specifying the details about the role so it is easy to change the details later. But, this has a runtime cost of an additional RPC to fetch the details about the role.
The downside to this method comes if you want to remove all users from a given role, or perform any other kind of global operation. I suppose you could mark a role 'deleted', but then you still have data cluttering up all your user models until you clean them up manually. So I am curious to hear what others suggest.