Использование OAuth и API пользователя GAE в приложении GAE
Я хотел бы разместить мое веб-приложение на основе Flask на GAE.
Обычные пользователи проходят проверку подлинности против Google с помощью flask-oauthlib.
Тем не менее, я хотел бы аутентифицировать пользователей-администраторов, используя GAE Users 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: создать отдельную колбу app
Объект в том же приложении GAE:
# app.yaml
[...]
# For admin users
- url: /admin
script: admin.app
login: admin
Это хорошая практика? Если нет, то почему?
Вариант 2. Просто реализуйте такую функцию, как:
def is_admin():
return current_user.email in ["admin1@...", "admin2@...", "admin3@..."]
То есть не полагайтесь на API пользователей GAE.
Заметки:
- есть только несколько администраторов
- Мне не нужны мелкозернистые роли на данный момент
Есть мысли (другие решения)?
1 ответ
У меня есть такие смешанные логины в моем приложении, не являющемся Flask, и мои обработчики выглядят так:
handlers:
- url: /admin
script: main.app
login: admin
- url: /.*
script: main.app
Не нужно иметь отдельное приложение для администратора. Я не знаю, как работает Flask, но я ожидаю, что это сработает и для вас.