приложение на GAE |Ограниченная аутентификация аккаунта Google |перечисленные учетные записи Google не все | - PullRequest
0 голосов
/ 08 сентября 2010

Я совершенно новичок в этом движке приложений Google. Я учу вещи каждый день. У меня есть форум на Google App Engine. Но я хочу иметь личные или закрытые части. Некоторые функции должны быть заблокированы для определенных пользователей аккаунта Google, которые находятся в каком-то списке контроля доступа.

Говоря простыми словами, я могу сказать, что только те пользователи, которые находятся в списке доступа, могут видеть форум, остальные будут перенаправлены на страницу "contact to admin".

Поскольку я новичок, я хочу знать, возможно ли это. если да, как я могу этого достичь? Спасибо, Alok

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Если вы используете встроенный пользовательский API, вы можете проверить users.is_current_user_admin () в качестве механизма контроля доступа. Администраторами можно управлять через панель инструментов .

Если вам нужна более детальная логика авторизации для конкретного приложения, обычно вы создаете модель пользователя в хранилище данных, которая ссылается на встроенный UserProperty, а также содержит список ролей или что-то еще, что вам нужно для проверки авторизации.

1 голос
/ 09 сентября 2010

Чтобы проконтролировать ответ Дрю, я использую аналогичную систему в своем приложении, поэтому в моем коде сервера есть что-то вроде следующего определения класса (упрощено здесь для ясности)

  class myUser(db.Model):
    user       = db.UserProperty(required=True)
    rights     = db.StringProperty(required=True, choices=set(["public", "private"]))
    created    = db.DateTimeProperty(auto_now_add=True)
    lastaccess = db.DateTimeProperty(auto_now=True)

, а затем у меня есть код, подобныйздесь я обрабатываю запросы

    def checkUserRights(user):
        q = db.GqlQuery("SELECT * from myUser WHERE user = :1", user)
        u = q.get()
        if not u:
            # create a new 'public access' user if we haven't seen this person before
            u = myUser(user=user, rights="public")
        # always update the user record after the source is fetched (updates the lastaccess field)
        db.put( u )
        return u.rights

   rights = checkUser(users.get_current_user())
   if isPrivateArea and rights == "private":
      ....

Таким образом, я создаю пользователя для КАЖДОГО посетителя, а затем у меня есть интерфейс администратора для изменения прав выбранных пользователей - вы можете решить, например, не создаватьзапись для каждого посетителя

def checkUserRights(user):
    q = db.GqlQuery("SELECT * from myUser WHERE user = :1", user)
    u = q.get()
    if not u:
        # grant default public rights to anyone...
        return "public"
    # always update the user record after the source is fetched (updates the lastaccess field)
    db.put( u )
    return u.rights

Это, конечно, на странице, где app.yaml указывает "login: required"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...