【问题标题】:Appengine ACL with Google Authentication带有 Google 身份验证的 Appengine ACL
【发布时间】:2011-06-04 21:49:39
【问题描述】:

我想使用 Google 身份验证实现 ACL。需要一些关于相同可能性的指针。

用例:

  • 只有 myadmin@gmail.com 可以访问页面 X

  • 所有人都可以访问的页面 Y 属于 Y 组。注册后,版主会将用户添加/拒绝到 Y 组。

  • 如果用户不属于上述两种中的任何一种,则无法访问页面。即使用户认证成功,也禁止未经授权的查看。

我打算在我的项目中使用 Django,任何 Django 提供的支持都会很有用。

提前致谢。

【问题讨论】:

    标签: python django google-app-engine authentication authorization


    【解决方案1】:

    您需要自己执行此操作:使用由用户的 user_id 键入的数据存储模型实现 ACL,并在每个请求上获取并检查它。用户 API 不提供类似的内置功能。

    【讨论】:

      【解决方案2】:

      这里只是对管理部分的回答,以及关于如何处理问题其他部分的可能建议:

      对于仅限管理员访问,我将以下几行放入app.yaml

      handlers:
      - url: /admin/.*
        script: main.py
        login: admin
      
      - url: /super-restricted-area/.*
        script: main.py
        login: admin
      

      以上内容会将adminsuper-restricted-area 基本网址仅限于网站管理员。您可以将多个网址限制为管理员。浏览Python Application Configuration doc后,我在配置级别找不到任何分组限制。

      对于以下内容,我假设您对 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
      

      这是above 的参考。

      【讨论】:

        猜你喜欢
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 2018-06-26
        • 1970-01-01
        相关资源
        最近更新 更多