谷歌应用程序引擎中的自定义身份validation(Python)

有谁知道或知道的地方,我可以学习如何创build一个使用Python和谷歌应用程序引擎的自定义身份validation过程?

我不想使用谷歌帐户进行身份validation,并希望能够创build自己的用户。

如果不是专门为谷歌应用程序引擎,任何资源如何使用python和Django实现身份validation?

那么今天在Google AppEngine上更新了django 1.0。 但是,你可以让用户身份validation像其他任何你无法真正使用的会话一样,因为它太庞大了。

http://gaeutilities.appspot.com/上有一个会话工具;

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

要么,

你必须创build你自己的用户表和散列或encryption密码,然后可能创build一个令牌系统,只是一个令牌散列或uuid cookie模拟会话(会话只是cookies)。

我已经实现了一些基本的google.webapp请求和响应头。 我通常使用uuids作为主键作为用户ID,然后encryption用户密码并将其电子邮件用于重置。

如果你想授权用户访问数据的外部,你可以看OAuth的应用程序访问。

如果你只是想通过一个id存储数据,而且它更多的是面向消费者,也许只需要使用像stackoverflow的openid,然后将configuration文件数据附加到该标识符,如djangoconfiguration文件( http://code.google.com/p/openid-selector / )。

django 1.0刚刚在GAE上出来,但是我认为同样的问题存在,没有会话,你必须真正创build自己的存储会话数据。

这是一个相当现成的解决scheme,工作得很好: http : //code.scotchmedia.com/engineauth/docs/index.html

它内置了对Facebook,Google +,Twitter,LinkedIn,GitHub和OpenId(通过Google App Engine)的支持。

你只需要将用户redirect到/auth/facebook或者/auth/google等等(这个URL是可定制的)。

它还实现了两个类: UserUserProfile ,每个User在您的应用程序中是唯一的帐户,可能涉及一个或多个UserProfiles – 哪一个是唯一User必须login到您的应用程序的login策略(如果不清楚,这是因为我的英文很糟糕, 文件解释更好)。

PS:文档不是很完整,但代码非常简单,简洁明了。 另外,在这里有一个讨论,作者提供了各种对困惑和开始用户的问题的答案。

OpenID使用者 (部分优秀的“应用程序引擎样本”开放源代码项目)目前工作正常(尽pipe其自述文件中的警告是旧的),并且会让您使用OpenID进行用户login。

Django的身份validation也可以通过例如这个项目 (至less是users一部分,不一定是groupspermissions虽然他们可能会让他们随时工作)。

我看到,这在谷歌popup,每次你search“自定义login在应用程序引擎”,所以我决定给一直在为我服务的答案。 这里是示例应用程序https://github.com/fredrikbonander/Webapp2-Sample-Applications

这用途

  1. webapp2(已经在GAE 1.6.2)
  2. Jinja2(已经在GAE 1.6.2中)

Webapp2似乎是GAE(构build在Web应用之上,因此是未来的certificate)的最佳select,因此使用GAE本身支持的框架进行身份validation是个不错的主意。 还有很多其他的框架,但是用户部分需要做大量的黑客工作才能使他们工作。 对于想build立“稳定”网站的人来说,这样的黑客工作是非常不可取的。

我也意识到现在GAE的SQL支持,django将在本地支持。 我们都知道django已经build立了用户authentication系统。 虽然,我认为,尤其是在NoSQL云世界是未来。 我相信在NoSQL的将来会有一个和django一样好的框架。 但那就是我,你的要求可能需要别的东西。

这是一个非常好的,相对较新的(2013年1月)博客文章,标题为Google App Engine上的webapp2的用户身份validation ,以及相关的GitHub repo: abahgat/webapp2-user-accounts

看看Django的应用程序引擎补丁 (你的首选框架,我假设你的问题)。 它提供对gae的身份validation。

或者,看看web2py 。 这是一个基于Python的框架,适用于GAE和关系数据库。 它内置的Auth对象提供给用户,组和权限。

但是,它并没有放弃对BigTable的无限制访问,而是提供了关系function的一个子集(BigTable不支持连接,例如web2py还不支持BigTable模型)。

Web2py和Django社区正在讨论对BigTable的支持。

我search了一段时间的应用程序引擎的自定义身份validation系统。 我最终决定在应用引擎上运行烧瓶。 我用这个样板运行在应用程序引擎上的瓶子https://github.com/kamalgill/flask-appengine-template/和这个瓶子authentication扩展http://pypi.python.org/pypi/Flask-Auth/随附即插即用的谷歌应用程序引擎支持。; 我认为烧瓶也有一个非常好的oAuth库,所以最终添加Facebook和Twitterlogin将是容易的

除了所有其他的优秀答案之外,我还要补充一点, Facebook , Twitter和github都提供了OAuth机制,您可以利用它作为您的应用程序的交钥匙身份validation支持。

看看这个项目,我正在与科托: https : //github.com/coto/gae-boilerplate它包括一个function齐全的自定义authentication系统等等。

另一个select是烧杯模块 。 客户端会话的AESencryption很好。