使用Google身份验证的Appengine ACL
我想用谷歌认证来实现访问控制列表(ACL)。想请教一下这方面的可能性。
使用场景:
页面X只能被myadmin@gmail.com访问。
页面Y对属于Y组的所有人开放。注册后,管理员会添加或拒绝用户加入Y组。
如果用户不属于上述两个组中的任何一个,页面将无法访问。即使用户成功登录,也不允许查看未授权的内容。
我打算用Django来做这个项目,Django提供的任何支持都会很有帮助。
提前谢谢大家。
2 个回答
0
这里是关于管理员部分的回答,以及一些可能的建议,帮助你处理问题的其他部分:
为了只让管理员访问,我在 app.yaml
文件中添加了以下几行:
handlers:
- url: /admin/.*
script: main.py
login: admin
- url: /super-restricted-area/.*
script: main.py
login: admin
这样做会限制 admin
和 super-restricted-area
这两个基本网址只能由网站的管理员访问。你可以有多个网址限制给管理员。看了一下 Python 应用配置 的文档,我没有找到在配置层面上进行分组限制的方法。
接下来,我假设你对 Django 非常熟悉,知道如何使用中间件和视图中的装饰器,否则要详细解释这两个主题可能会需要很多篇幅。如果假设在配置层面上无法进行分组限制,你可以尝试把授权代码放在 Django 的中间件中(如果应用引擎支持的话,因为在应用引擎上使用 Django 有一些限制),或者放在你的视图的装饰器中。
在你的中间件或装饰器中,可以从以下内容开始:
from google.appengine.api import users
user = users.get_current_user()
if user:
# Get the group of the user and perform your authorisation
这里是关于 上述内容 的参考资料。
5
你需要自己来做这个:实现一个访问控制列表(ACL),用一个以用户的 user_id
为关键字的数据存储模型,并在每次请求时去获取和检查它。用户API并没有提供这样的内置功能。