我正在为客户重构一个应支持 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()
有更好的解决方案吗?已有答案here但我不明白这是否适合我。 我已经开发了一个使用 Users API 的应用程序和另一个使用 Facebook Connect 的应用程序,所以我知道如何处理这两者,问题是将它们连接在一起。不幸的是,切换到另一个框架不是一个选择。
最佳答案
我会仔细看看 tipfy及其 Authentication extension .*
他们实现了 Universal User model可以与 App Engine 的默认用户 API、自己的身份验证或第三方身份验证方法(OpenId、OAuth 等)一起使用。
Here是文档,查找 MultiAuthMixin 部分。
*优秀的程序员写出优秀的代码;伟大的程序员窃取伟大的代码
关于python - 在 AppEngine 上支持多登录的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200531/