2012-06-18 4 views
11

Для проекта, я собираюсь создать приложение на Google App Engine, где:Генерирующие учетные записи пользователей внутри Google App Engine

  • Обсуждения Лидеры могут зарегистрировать их адрес электронной почты (или аккаунт OpenID или Google) на самом веб-сайте, чтобы использовать его.
  • На странице администрирования приложения они могут создавать групповое обсуждение, для которого они могут добавлять пользователей на основании их адреса электронной почты
  • , и эти пользователи должны получать сгенерированные данные учетной записи (если у них еще нет учетных записей) они могут войти в эту группу с помощью своей новой учетной записи.

Я не хочу, чтобы лидеры обсуждений имели учетную запись Google или учетную запись OpenID, чтобы зарегистрироваться для приложения, а все остальные учетные записи пользователей должны быть созданы лидером обсуждения.

Однако Google App Engine, похоже, поддерживает учетные записи Google и учетные записи OpenID. Как я могу это сделать? Существует ли существующая модель для создания учетных записей лидеров и создания учетных записей пользователей в Google App Engine, которые по-прежнему поддерживают API-интерфейс GAE?

ответ

4

GAE User API только для того, чтобы предоставить вам зарегистрированный пользователь и некоторые его атрибуты. Вам все равно придется хранить эту информацию в хранилище данных внутри, скажем, модели User.

Оттуда вы можете делать все, что вы хотите с вашей бизнес-логики, и как вы собираетесь хранить/создавать пользователей на основе писем и что делать с этими пользователями, как группировать их и т.д.

Чтобы поддерживать регистрацию OAuth, например Facebook или Twitter, вам нужно будет использовать свой API для аутентификации пользователей из этих служб (регистрация ключей, запрос разрешений и т. Д.). К счастью для вас существует множество инфраструктур, которые покрывают эту проблему, но это зависит от вашей структуры и того, что вы используете в настоящее время.

(Disclaimer это мое) Так как вы просто создать новое приложение, вы посмотрите на проекте gae-init, который в основном является отправной точкой для нового приложения, которое уже Google, Facebook и Twitter логинов и хранить их можно в хранилище данных, где они могут изменять свои свойства. Вы должны быть уже знакомы с GAE.

8

EngineAuth

Несколько месяцев назад я разработал пакет питона под названием EngineAuth. Он использует промежуточное программное обеспечение для перехвата запроса, предназначенного для аутентификации.

Вот пример приложения:

http://engineauth.scotchmedia.com/

И источник:

https://github.com/scotch/engineauth

EngineAuth имеет различные стратегии аутентификации. Одним из них является пароль.

Password берет пароль и строку (может быть письмо). Если строка находится в хранилище данных, она проверяет пароль на сохраненный хэш. Если он соответствует ему, регистрирует пользователя. Если строка не находится в хранилище данных, она создает нового пользователя.

EngineAuth также имеет стратегию appengine_openid, которая позволяет вам вводить пользователей в систему с помощью App Engine Openid.

Хорошая вещь о EngineAuth заключается в том, что если ваш пользователь зарегистрирован в App Engine OpenID, и они затем регистрируются с паролем, он связывает пользователя с обеими стратегиями.

aeauth

я не был полностью удовлетворен EngineAuth, однако, так что я решил создать более модульный дизайн, который был в большей степени зависит от webapp2. Я так и не закончил, так как я разрабатываю проект в Go Now, но, возможно, код поможет.

webapp2 auth

Большая часть функциональности паролем EngineAuth и aeauth был взят из webapp2_extras/авт, которые могли бы дать вам simpilar подход.

+0

Эй, приятно видеть ваш ответ, поскольку я действительно подробно изучил ваше решение и код и нашел очень интересную концепцию присоединения пользователя к нескольким UserProfiles. Тем не менее, я не мог найти способ заставить его работать с обработчиками аутентификации по умолчанию GAE (логин: требуется +/_ah/login_required + @login_required) - Теперь я смотрю на [gae-templateplate] (https: // github .com/Кото/GAE-шаблонный). Я буду следить за вашим GitHub. – mahler

+0

Использование EngineAuth - один из способов обработки 'login: required' - автоматически создавать' appengine_openid' 'user_profile', если пользователь зарегистрирован как пользователь Google. В качестве альтернативы вы можете создать декоратор 'login_require', который проверяет подарки' request.user' и использует его вместо этого. –

3

Если вы не хотите запрашивать учетную запись Google или учетную запись OpenID, вам необходимо запустить свою учетную систему. Это дает вам максимальную свободу, но это большая работа и заставляет вас отвечать за безопасность паролей (ouch). Лично я бы посоветовал вам пересмотреть это требование - OpenID особенно много для него (кроме IIUC, это не так просто использовать Facebook).

+0

Спасибо за ваш ответ, и я действительно согласен с вами в преимуществах внешнего использования системы учета. Одна из моих идей заключалась в создании учетных записей с провайдером OpenID, вызывающим их API из моего приложения, но я еще не нашел поставщика OpenID, который имеет эту функцию. – mahler

+0

Возможно, потому, что автоматическое создание учетных записей - это путь к массовому спаму и мошенничеству. –

Смежные вопросы