使用Google身份验证的Appengine ACL

3 投票
2 回答
881 浏览
提问于 2025-04-16 18:57

我想用谷歌认证来实现访问控制列表(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

这样做会限制 adminsuper-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并没有提供这样的内置功能。

撰写回答