Google App Engine自定义身份验证
有没有人知道或者能推荐一个地方,让我学习如何用Python和Google App Engine创建一个自定义的认证流程?
我不想使用Google账户来进行认证,而是想自己创建用户。
如果没有专门针对Google App Engine的资料,任何关于如何用Python和Django实现认证的资源也可以。
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
用来登录你应用的方式(如果不太明白,可能是因为我的英语很差,详细的解释可以参考文档)。
附注:文档不是很完整,但代码相对简单、短小且自解释。此外,这里有一个讨论链接,作者在里面回答了许多初学者的疑问。
今天,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 上发布,但我认为同样的问题依然存在,没有会话,你真的需要自己创建一个来存储会话数据。