Google App Engine自定义身份验证

37 投票
10 回答
24982 浏览
提问于 2025-04-15 12:23

有没有人知道或者能推荐一个地方,让我学习如何用Python和Google App Engine创建一个自定义的认证流程?

我不想使用Google账户来进行认证,而是想自己创建用户。

如果没有专门针对Google App Engine的资料,任何关于如何用Python和Django实现认证的资源也可以。

10 个回答

8

这个OpenID消费者(属于很棒的“应用引擎示例”开源项目的一部分)现在可以正常使用(尽管它的README里有些老旧的警告),可以让你的用户通过OpenID登录。

django的认证系统也可以用,比如通过这个项目(至少是users部分,至于groupspermissions部分可能还没完全搞定,但他们随时可能会修复)。

10

这是一个相当简单易用的解决方案,效果也不错:http://code.scotchmedia.com/engineauth/docs/index.html

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

你只需要把用户重定向到 /auth/facebook/auth/google 等等(这个网址是可以自定义的)。

它还实现了两个类:UserUserProfile,每个 User 都是你应用中的一个独特账户,并且可以关联一个或多个 UserProfiles —— 其中一个是这个独特 User 用来登录你应用的方式(如果不太明白,可能是因为我的英语很差,详细的解释可以参考文档)。

附注:文档不是很完整,但代码相对简单、短小且自解释。此外,这里有一个讨论链接,作者在里面回答了许多初学者的疑问。

20

今天,Django 1.0 在 Google AppEngine 上更新了。不过,用户认证可以像其他功能一样实现,只是你不能真正使用会话,因为它太庞大了。

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

http://gaeutilities.appspot.com/session

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

或者,

你需要自己创建用户表,并对密码进行哈希或加密,然后可能需要创建一个模拟会话的令牌系统,只用一个令牌哈希或 UUID cookie(会话本质上就是 cookies)。

我已经用基本的 google.webapp 请求和响应头实现了一些功能。我通常使用 UUID 作为主键,也就是用户 ID,然后加密用户密码,并用他们的邮箱来重置密码。

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

如果你只是想通过 ID 存储数据,并且更面向消费者,可能可以像 StackOverflow 一样使用 OpenID,然后将个人资料数据附加到那个标识符上,就像 Django 的个人资料一样(http://code.google.com/p/openid-selector/)。

Django 1.0 今天刚在 GAE 上发布,但我认为同样的问题依然存在,没有会话,你真的需要自己创建一个来存储会话数据。

撰写回答