11

对于一个项目,我将在 Google App Engine 上创建一个应用程序,其中:

  • 讨论领导者可以在网站上使用他们的电子邮件地址(或 OpenID 或 Google 帐户)进行注册以使用它。
  • 在应用程序管理页面中,他们可以创建一个小组讨论,他们可以根据他们的电子邮件地址为其添加用户
  • 然后这些用户应该会收到生成的帐户详细信息(如果他们还没有帐户),使他们能够使用他们新创建的帐户登录到该小组讨论。

我不想要求讨论负责人拥有 Google 帐户或 OpenID 帐户才能注册应用程序,并且所有用户其他帐户必须由讨论负责人生成。

但是 Google App Engine 似乎只支持 Google Accounts 和 OpenID 帐户。我该怎么办?是否存在用于从 Google App Engine 中创建领导者帐户和生成用户帐户的现有模式,仍然支持 GAE 用户 API?

4

3 回答 3

8

引擎认证

几个月前,我开发了一个名为EngineAuth的 python 包。它使用中间件拦截用于身份验证的请求。

这是一个示例应用程序:

http://engineauth.scotchmedia.com/

来源:

https://github.com/scotch/engineauth

EngineAuth有多种认证策略。其中之一是密码。

密码需要一个密码和一个字符串(可以是电子邮件)。如果字符串在数据存储中,它会根据存储的哈希检查密码。如果匹配,则将用户登录。如果字符串不在数据存储中,则创建一个新用户。

EngineAuth还有一个appengine_openid策略,允许您使用 App Engine Openid 登录用户。

EngineAuth 的好处在于,如果您的用户已登录 App Engine OpenID,然后他们使用密码登录,它会将用户与这两种策略相关联。

认证

然而,我对EngineAuth并不完全满意,所以我决定创建一个更依赖于 webapp2 的模块设计。我从未完成,因为我现在正在用 Go 开发项目,但也许代码会有所帮助。

webapp2 身份验证

EngineAuthaeauth的大部分密码功能取自 webapp2_extras/auth,这可能会为您提供一种简单的方法。

于 2012-06-18T17:28:12.190 回答
4

GAEUser API只是为您提供当前登录的用户和他的一些属性。无论如何,您都必须将此信息存储在User模型中的数据存储中。

从那里你可以对你的业务逻辑做任何你想做的事情,以及你将如何根据电子邮件存储/创建用户以及如何处理这些用户、如何对它们进行分组等。

为了支持OAuth登录,如Facebookor Twitter,您将不得不使用他们自己的 API 来了解如何通过这些服务对用户进行身份验证(注册密钥、请求权限等)。幸运的是,有很多框架可以解决这个问题,但这取决于您的结构和您当前使用的内容。

(免责声明是我的)由于您只是创建一个新应用程序,您可以查看gae-init项目,它基本上是您的新应用程序的起点,并且已经Google登录Facebook并将Twitter它们存储在数据存储中,其中他们可以改变他们的属性。不过,您必须已经熟悉 GAE。

于 2012-06-18T13:57:42.850 回答
3

If you don't want to require a Google Account or OpenID account you have to roll your own accounts system. This gives you maximum freedom, but it is a lot of work and makes you responsible for password security (ouch). Personally I would advise you to reconsider this requirement -- OpenID especially has a lot going for it (except IIUC it's not so simple to use Facebook).

于 2012-06-19T02:57:46.530 回答