对于一个项目,我将在Google App Engine上创建一个应用程序:
我不希望讨论领导者拥有Google帐户或OpenID帐户以注册该应用程序,所有用户的其他帐户必须由讨论负责人生成。
然而,Google App Engine似乎只支持Google帐户和OpenID帐户。我该怎么做?是否存在用于在Google App Engine中创建领导者帐户和生成用户帐户的现有模式,该模式仍然支持GAE用户API?
答案 0 :(得分:8)
几个月前,我开发了一个名为EngineAuth的python包。它使用中间件拦截用于身份验证的请求。
以下是一个示例应用:
http://engineauth.scotchmedia.com/
来源:
https://github.com/scotch/engineauth
EngineAuth有各种身份验证策略。其中一个是密码。
Password获取密码和字符串(可能是电子邮件)。如果字符串位于数据存储区中,则会根据存储的哈希检查密码。如果匹配,则将用户登录。如果该字符串不在数据存储区中,则会创建新用户。
EngineAuth还有一个appengine_openid策略,允许您使用App Engine Openid登录用户。
关于EngineAuth的好处是,如果您的用户登录App Engine OpenID,然后他们使用密码登录,则会将用户与两种策略相关联。
然而,我对EngineAuth并不完全满意,所以我决定创建一个更依赖于webapp2的模块设计。我从未完成过,因为我现在正在Go中开发项目,但也许代码会有所帮助。
EngineAuth和aeauth的大部分密码功能都来自webapp2_extras / auth,可能会让您采用简单的方法。
答案 1 :(得分:4)
GAE User API
仅用于为您提供当前登录的用户及其部分属性。您无论如何都必须将此信息存储在数据存储区中,比如User
模型。
从那里,您可以根据自己的业务逻辑做任何事情,以及如何根据电子邮件存储/创建用户,如何对这些用户进行分组,等等。
为了支持OAuth
登录,例如Facebook
或Twitter
,您必须使用自己的API来了解如何通过这些服务对用户进行身份验证(注册密钥,要求权限等)。幸运的是,有很多框架可以解决这个问题,但这取决于你的结构以及你目前使用的是什么。
(免责声明是我的)由于您刚刚创建了一个新的应用程序,您可以查看gae-init项目,该项目基本上是已经Google
的新应用程序的起点, Facebook
和Twitter
登录并将其存储在数据存储区中,以便更改其属性。你必须已经熟悉GAE了。
答案 2 :(得分:3)
如果您不想要Google帐户或OpenID帐户,则必须推出自己的帐户系统。这为您提供了最大的自由度,但它需要做很多工作并且让您负责密码安全(ouch)。我个人会建议你重新考虑这个要求 - OpenID特别有很多功能(除了IIUC,使用Facebook并不是那么简单)。