Db.UserProperty от Google App Engine с помощью rpxnow - PullRequest
0 голосов
/ 13 сентября 2010

У нас есть проект Django, который работает на Google App Engine и использует db.UserProperty в нескольких моделях.У нас нет собственной модели User.

Мой босс хотел бы использовать RPXNow (Janrain) для аутентификации, но после того, как я его интегрировал, метод users.get_current_user() вернул None.Это имеет смысл, потому что не Google аутентифицировал меня.Но что я должен использовать для db.UserProperty атрибутов?Можно ли использовать rpxnow и все еще иметь объект Google от пользователя?

После этого я попытался использовать аутентификацию OpenID (с федеративным входом в систему) в своем приложении, и это работает довольно хорошо: у меня все еще есть users.get_current_user() объект.Насколько я знаю, rpxnow также использует openID, что означает (для меня), что можно получить объекты User с помощью rpxnow.Но как?

Приветствия, Псмит

Ответы [ 2 ]

3 голосов
/ 15 сентября 2010

Я еще не пробовал, но App Engine теперь поддерживает федеративный вход в систему (OpenID) в качестве механизма аутентификации. Вы можете включить его с панели управления.

Подробнее здесь: http://code.google.com/googleapps/domain/sso/openid_reference_implementation.html

Независимо от этого, очень просто - как только вы интегрировали RPXNow - связать его с вашим приложением с помощью Polymodel следующим образом:

class InternalUser(polymodel.PolyModel):
  name = db.StringProperty(required=True)
  groups = db.ListProperty(db.Key)

class GoogleUser(InternalUser):
  google_user = db.UserProperty(required=True)

class OpenIDUser(InternalUser):
  unique_identifier = db.StringProperty(required=True)

И тогда вместо db.UserProperty вы бы использовали db.ReferenceProperty(required=True, reference_class=InternalUser).

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

Вы можете получить объект User, только если вы используете один из встроенных методов аутентификации. Пользовательские объекты предоставляют интерфейс для API пользователя, который обрабатывается инфраструктурой App Engine. Если вы используете свою собственную библиотеку аутентификации, независимо от того, какой протокол она использует, вам придется хранить информацию о пользователе по-разному.

...