Подтвердить что ты не робот

Пользовательская аутентификация в Google App Engine

Кто-нибудь знает или знает, где я могу узнать, как создать пользовательский процесс аутентификации с использованием Python и Google App Engine?

Я не хочу использовать учетные записи Google для аутентификации и хочу иметь возможность создавать своих собственных пользователей.

Если не специально для Google App Engine, какой-нибудь ресурс о том, как реализовать аутентификацию с использованием Python и Django?

4b9b3361

Ответ 1

Итак, django 1.0 был обновлен сегодня в Google AppEngine. Но вы можете сделать аутентификацию пользователя, как и все остальное, что просто не можете использовать сеансы, потому что она настолько массивная.

В утилите сеанса есть http://gaeutilities.appspot.com/

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

Или,

Вам нужно создать свои собственные пользовательские таблицы и хешировать или зашифровать пароли, а затем, возможно, создать систему токенов, имитирующую сеанс с хэшем токена или uuid cookie (в любом случае сеансы - это всего лишь куки).

Я реализовал несколько с помощью только простых запросов google.webapp и заголовков ответов. Обычно я использую uuids для первичных ключей в качестве идентификатора пользователя, затем шифрую пароль пользователя и получаю его электронную почту для сброса.

Если вы хотите разрешить пользователям внешний доступ к данным, вы можете посмотреть OAuth для доступа к приложениям.

Если вы просто хотите хранить данные по идентификатору и больше обращены к потребителю, возможно, просто используйте openid, например stackoverflow, а затем привяжите данные профиля к этому идентификатору, например, профили django (http://code.google.com/p/openid-selector/).

django 1.0 появился сегодня на GAE, но я думаю, что те же проблемы существуют, нет сеансов, вы должны действительно создавать свои собственные, которые хранят данные сеанса.

Ответ 2

Это довольно готовое решение и работает очень хорошо: http://code.scotchmedia.com/engineauth/docs/index.html

Он имеет встроенную поддержку для Facebook, Google+, Twitter, LinkedIn, GitHub и OpenId (через Google App Engine).

вам просто нужно перенаправить пользователя на /auth/facebook или /auth/google и т.д. (этот URL настраивается).

Он также реализует два класса: User и UserProfile, каждый User является уникальной учетной записью в вашем приложении и может относиться к одному или нескольким UserProfiles - который является стратегией входа в систему, t22 > должен войти в ваше приложение (если это неясно, потому что мой английский очень плохой, docs лучше объясняет).

P.S.: Документация не очень полная, но код довольно простой, короткий и понятный. Кроме того, здесь обсуждается в котором автор предоставляет различные ответы на вопросы путаных и начинающих пользователей.

Ответ 3

В настоящее время работает клиент OpenID (часть превосходных "примеров движка приложений" с открытым исходным кодом) (несмотря на предупреждения в README, который является старым) и позволит вам использовать OpenID для своих пользователей.

django auth также можно использовать, например, этот проект (по крайней мере, часть users, не обязательно groups и permissions, хотя они могут заставить их работать в любое время).

Ответ 4

Я видел, что это всплывает в google, каждый раз, когда вы выполняете поиск "Пользовательский логин в приложении", поэтому Я решил дать ответ, который служил мне. Вот пример приложения https://github.com/fredrikbonander/Webapp2-Sample-Applications

В этом случае используется

  • webapp2 (уже в GAE 1.6.2)
  • Jinja2 (уже в GAE 1.6.2)

Webapp2, по-видимому, лучший выбор для GAE (построенного на вершине webapp, следовательно, будущего доказательства), поэтому аутентификация с использованием основы, основанной на GAE, является хорошей идеей. Здесь очень много другие структуры, но для их работы необходимо сделать много взлома в части пользователей. Для людей, которые хотят создать "стабильный" сайт, такая работа с хаком крайне нежелательна.

Я также понимаю, что поддержка SQL для GAE существует сейчас, и django будет поддерживаться изначально. Мы все знаем, что django построил систему аутентификации пользователей. Хотя, я думаю, особенно в облачном мире NoSQL - это будущее. Я уверен, что в будущем для NoSQL будет создана такая же удобная платформа, как django. Но это я, ваше требование может потребовать что-то еще.

Ответ 6

Посмотрите app-engine-patch для Django (ваша предпочтительная структура, которую я предполагаю из вашего вопроса). Он предлагает аутентификацию по gae.

В качестве альтернативы, посмотрите web2py. Это основанная на Python структура, которая работает с базами данных GAE и Relational. Встроенный объект Auth предоставляет пользователям, группам и разрешениям.

Он не дает необузданного доступа к BigTable, хотя вместо этого предлагает подмножество реляционных функциональных возможностей (BigTable не поддерживает Joins, например, и web2py еще не поддерживает модели BigTable).

Поддержка BigTable обсуждается как сообществами Web2py, так и Django.

Ответ 7

Я долго искал поисковую систему аутентификации для приложения. В конце концов я решил запустить флягу на движке приложения. Я использовал этот шаблон для запуска фляжки на движке приложения https://github.com/kamalgill/flask-appengine-template/ и это расширение для фляжки http://pypi.python.org/pypi/Flask-Auth/, который поставляется с поддержкой подключаемого модуля Google Play. Я думаю, что фляжка также имеет очень хорошую библиотеку oAuth, поэтому в конечном итоге добавление логинов facebook и twitter будет легким.

Ответ 8

В дополнение ко всем остальным отличным ответам я бы добавил, что Facebook, Twitter и github все предлагают механизмы OAuth, которые вы можете использовать в качестве поддержки аутентификации под ключ для вашего приложения.

Ответ 9

Взгляните на этот проект, над которым я работаю coto: https://github.com/coto/gae-boilerplate Он включает в себя полнофункциональную систему аутентификации и многое другое.

Ответ 10

Другим вариантом является Beaker module. Шифрование AES для сеансов на стороне клиента приятно.