我们有一个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获取用户对象。但是怎么做呢?
干杯,psmith
发布于 2010-09-14 17:31:46
如果您使用的是内置身份验证方法之一,则只能获取User对象。用户对象为用户API提供了一个接口,该接口由App Engine基础设施处理。如果您使用自己的身份验证库,则无论它使用什么协议,都必须以不同的方式存储用户信息。
发布于 2010-09-15 04:32:26
我还没有尝试过,但是App Engine现在支持联合登录(OpenID)作为一种身份验证机制。您可以从控制面板启用它。
点击此处阅读更多信息:http://code.google.com/googleapps/domain/sso/openid_reference_implementation.html
尽管如此,集成了RPXNow的-once很容易使用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.ReferenceProperty(required=True, reference_class=InternalUser)而不是db.UserProperty。
https://stackoverflow.com/questions/3699751
复制相似问题