0

我们有一个 Django 项目,它在 Google App Engine 上运行并用于db.UserProperty多个模型。我们没有自己的用户模型。

我的老板想使用RPXNow(Janrain)进行身份验证,但是我集成后,users.get_current_user()方法返回None。这是有道理的,因为谷歌没有对我进行身份验证。但是我应该为db.UserProperty属性使用什么?是否可以使用 rpxnow 并且仍然可以拥有 Google 的 User 对象?

在此之后,我尝试在我的应用程序中使用 OpenID 身份验证(使用联合登录),并且效果很好:我仍然有users.get_current_user()对象。据我所知,rpxnow 也使用 openID,这意味着(对我而言)应该可以使用 rpxnow 获取用户对象。但是怎么做?

干杯,普史密斯

4

2 回答 2

3

我还没有尝试过,但 App Engine 现在支持联合登录 (OpenID) 作为身份验证机制。您可以从仪表板启用它。

在此处阅读更多信息:http ://code.google.com/googleapps/domain/sso/openid_reference_implementation.html

无论如何,一旦您集成了 RPXNow,就可以很容易地使用 Polymodel 将其链接到您的应用程序,如下所示:

class InternalUser(polymodel.PolyModel):
  name = db.StringProperty(required=True)
  groups = db.ListProperty(db.Key)

class GoogleUser(InternalUser):
  google_user = db.UserProperty(required=True)

class OpenIDUser(InternalUser):
  unique_identifier = db.StringProperty(required=True)

然后,db.UserProperty您将使用db.ReferenceProperty(required=True, reference_class=InternalUser).

于 2010-09-14T20:32:25.600 回答
1

如果您使用其中一种内置身份验证方法,则只能获取 User 对象。用户对象为用户 API 提供了一个接口,该接口由 App Engine 基础架构处理。如果您使用自己的身份验证库,无论它使用什么协议,您都必须以不同的方式存储用户信息。

于 2010-09-14T09:31:46.347 回答