有没有人知道或知道我可以学习如何使用python和google app引擎创建自定义身份验证过程?
我不想使用Google帐户进行身份验证,并且希望能够创建自己的用户。
如果不是专门针对谷歌应用引擎,有关如何使用python和django实现身份验证的任何资源?
答案 0 :(得分:20)
django 1.0今天在Google AppEngine上更新了。但你可以像其他任何你不能真正使用会话的用户身份验证一样,因为它非常庞大。
http://gaeutilities.appspot.com/
中有会话实用程序http://gaeutilities.appspot.com/session
http://code.google.com/p/gaeutilities/
或者,
您必须创建自己的用户表并对密码进行哈希或加密,然后可能创建一个令牌系统,该系统仅使用令牌哈希或uuid cookie来模仿会话(会话只是cookie)。
我已经使用基本的google.webapp请求和响应标头实现了一些。我通常使用uuids作为主键作为用户ID,然后加密用户密码并将其电子邮件用于重置。
如果您想授权用户外部访问数据,您可以查看OAuth以获取应用程序访问权限。
如果您只想按ID存储数据并且面向消费者,可能只需使用openid就像stackoverflow一样,然后将配置文件数据附加到该标识符,如django profiles(http://code.google.com/p/openid-selector/)。
django 1.0今天刚刚出现在GAE上,但我认为存在相同的问题,没有会话,你必须真正创建自己的存储会话数据。
答案 1 :(得分:10)
这是一个非常开箱即用的解决方案,效果很好: http://code.scotchmedia.com/engineauth/docs/index.html
它内置支持Facebook,Google +,Twitter,LinkedIn,GitHub和OpenId(通过Google App Engine)。
您只需将用户重定向到/auth/facebook
或/auth/google
,依此类推(此网址可自定义)。
它还实现了两个类:User
和UserProfile
,每个User
都是您应用中的唯一帐户,可能与一个或多个UserProfiles
相关 - 哪一个是一个独特的User
必须登录到您的应用程序的登录策略(如果不清楚,那是因为我的英语非常糟糕,docs解释得更好)。
P.S。:文档不是很完整,但代码非常简单,简短且不言自明。此外,还有一个讨论here,其中作者提供了对困惑和开始用户的问题的各种答案。
答案 2 :(得分:8)
OpenID consumer(优秀的“应用引擎示例”开源项目的一部分)目前正在运行(尽管其README中的警告已经过时),并允许您使用OpenID进行用户登录。< / p>
django的auth也可用,例如this project(至少users
部分,不一定是groups
和permissions
,尽管他们可能随时让他们工作。)
答案 3 :(得分:8)
我看到每当您搜索“自定义登录应用引擎”时,这会在Google中弹出 我决定给出一个一直为我服务的答案。 这是示例应用程序 https://github.com/fredrikbonander/Webapp2-Sample-Applications
这使用
Webapp2似乎是GAE的最佳选择(建立在webapp之上,因此未来证明)所以使用GAE原生支持的框架进行身份验证是一个好主意。有许多 其他框架,但必须在用户部分进行大量的黑客攻击才能使它们正常工作。对于想要建立“稳定”网站的人来说,这种黑客攻击工作是非常不受欢迎的。
我也意识到现在有对GAE的SQL支持,本机将支持django。 我们都知道django内置了用户认证系统。虽然,我认为,尤其是在云世界,NoSQL是未来。我相信NoSQL将来会有一个像django一样好的框架。但那就是我,你的要求可能会要求其他东西。
答案 4 :(得分:7)
这是一篇优秀且相对较新的(2013年1月)博客文章,标题为User authentication with webapp2 on Google App Engine,相关GitHub repo: abahgat/webapp2-user-accounts
。
答案 5 :(得分:4)
看看Django的app-engine-patch(我从你的问题中假设你喜欢的框架)。它提供了gae身份验证。
或者,看看web2py。它是一个基于Python的框架,适用于GAE和Relational数据库。它内置的Auth对象提供用户,组和权限。
它并没有提供对BigTable的无限制访问,而是提供关系功能的子集(例如BigTable不支持连接,而web2py不支持BigTable模型)。
Web2py和Django社区正在讨论对BigTable的支持。
答案 6 :(得分:2)
我用谷歌搜索了一段时间用于app引擎的自定义身份验证系统。我最终决定在应用引擎上运行烧瓶。我使用这个样板文件在app引擎https://github.com/kamalgill/flask-appengine-template/上运行烧瓶,这个烧瓶版权扩展http://pypi.python.org/pypi/Flask-Auth/附带即插即用谷歌应用引擎支持。我认为flask也有一个非常好的oAuth库,所以最终添加facebook和twitter登录将很容易
答案 7 :(得分:1)
答案 8 :(得分:1)
看看我正在使用coto进行的这个项目:https://github.com/coto/gae-boilerplate它包括一个功能齐全的自定义身份验证系统等等。
答案 9 :(得分:1)
另一个选项是Beaker module。 客户端会话的AES加密很不错。