在 GAE 应用程序中同时使用 OAuth 和 GAE 的用户 API



我想在 GAE 上托管我的基于 Flask 的 Web 应用程序。

普通用户使用flask-oauthlib对Google进行身份验证。

但是,我想使用 GAE 的用户 API 对管理员用户进行身份验证,因为它提供了users.is_current_user_admin() .

但是,我似乎无法保护admin区域免受app.yaml,因为以下配置无效:

# app.yaml
[...]
handlers:
# For admin users
# THIS IS INVALID!
- url: /admin
  login: admin
# For regular users
- url: /.*
  script: main.app

选项 1:在同一 GAE 应用程序中创建单独的烧瓶app对象:

# app.yaml
[...]
# For admin users
- url: /admin
  script: admin.app
  login: admin

这是一种好的做法吗?如果没有,为什么?


选项 2:只需实现一个功能,例如:

def is_admin():
  return current_user.email in ["admin1@...", "admin2@...", "admin3@..."]

也就是说,不要依赖 GAE 的用户 API。


笔记:

  • 只有少数管理员用户
  • 我目前不需要细粒度的角色

有什么想法(其他解决方案)吗?

我的非 Flask 应用程序中有这样的混合登录,我的处理程序如下所示:

handlers:
- url: /admin
  script: main.app
  login: admin
- url: /.*
  script: main.app

无需为管理员提供单独的应用程序。 我不知道 Flask 是如何工作的,但我希望它也能为你工作。

最新更新