2009-06-20 3 views
37

Кто-нибудь знает или знает где-нибудь, я могу узнать, как создать пользовательский процесс аутентификации с помощью python и движка Google?Пользовательская аутентификация в движке google (python)

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

Если не специально для движка Google, какой-либо ресурс о том, как реализовать аутентификацию с помощью python и django?

ответ

20

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

Существует утилита сессии в http://gaeutilities.appspot.com/

http://gaeutilities.appspot.com/session

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

Или

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

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

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

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

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

+1

Ничего себе, звучит сложно. Я не знал, что мы не можем использовать сеансы. Я предполагаю, что я ищу некоторые функции предварительной проверки подлинности, которые я мог бы просто добавить в свое приложение. – dtc

+0

Yeh с той библиотекой http://gaeutilities.appspot.com/session, которую вам нужно будет сделать, - это обработать регистрацию пользователя. Облако в значительной степени без сеанса и соединений и т. Д., Все, что застряло на одной машине, должно иметь новые способы делать вещи. –

+0

Я не думал об этом (о сеансах и облаке). Спасибо вам за ссылки. – dtc

8

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

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

+0

Это интересно, но мы хотим иметь возможность сами создавать пользователей и предоставлять пользователям имя пользователя/пароли пользователям. Мы не разрешаем внешнюю регистрацию. – dtc

+0

Почему бы и нет? Вы все еще можете зарегистрировать пользователя в OpenID - просто создайте пользователя и попросите регистрационную информацию (но не имя пользователя/пароль), когда они впервые войдут в систему с новым openid. –

+1

Мы хотим контролировать доступ пользователя к системе, включая идентификатор пользователя и пароль. Поэтому открытый идентификатор не используется. – dtc

4

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

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

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

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

8

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

Это использует

  1. webapp2 (уже в GAE 1.6.2)
  2. Jinja2 (уже в GAE 1.6.2)

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

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

+0

Ссылка есть. – specialscope

10

Это решение довольно вне коробки, и работает очень хорошо: 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 - какой из стратегии входа, уникальный User имеет войти в приложение (если это неясно, это потому, что мой английский очень плох, объясните лучше) docs.

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

1

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

2

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

+0

Хотя это добавляет немного больше информации, я думаю, что принятый ответ - лучший выбор. –

1

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

1

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

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