Пользовательская аутентификация в Google App Engine
Кто-нибудь знает или знает, где я могу узнать, как создать пользовательский процесс аутентификации с использованием Python и Google App Engine?
Я не хочу использовать учетные записи Google для аутентификации и хочу иметь возможность создавать своих собственных пользователей.
Если не специально для Google App Engine, какой-нибудь ресурс о том, как реализовать аутентификацию с использованием Python и Django?
Ответы
Ответ 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. Но это я, ваше требование может потребовать что-то еще.
Ответ 5
Вот отличное и относительно недавнее (янв. 2013) сообщение в блоге под названием Аутентификация пользователя с помощью webapp2 в Google App Engine и связанная Репозиторий GitHub: abahgat/webapp2-user-accounts
.
Ответ 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 для сеансов на стороне клиента приятно.