Я рефакторинг для клиента приложения, которое должно поддерживать OpenID, Facebook Connect и пользовательскую аутентификацию (адрес электронной почты + пароль). Предположим, что я имеет:
class MyUser(db.Model):
pass
class Item(db.Model):
owner = db.ReferenceProperty(MyUser)
Я думал реализовать различные системы аутентификации следующим образом:
class OpenIDLogin(db.Model): # key_name is User.federated_identity()? User.user_id()?
user = db.ReferenceProperty(MyUser)
class FacebookLogin(db.Model): # key_name is Facebook uid
user = db.ReferenceProperty(MyUser)
class CustomLogin(db.Model): # key_name is the user email
user = db.ReferenceProperty(MyUser)
password = db.StringProperty()
Есть ли лучшее решение? Здесь уже есть ответ , но я не могу понять, правильно ли это решение для меня. Я уже разработал приложение с использованием API-интерфейсов пользователей, а другое - с помощью Facebook Connect в прошлом, поэтому я знаю, как справляться с ними, проблема заключается в их объединении. К сожалению, переход на другую инфраструктуру - это не вариант.