1

今天我试图让 django-piston 和 ExtJS 工作。我使用了 ExtJS 的 restful 示例和活塞示例来创建一个小的 restful webapp。除身份验证外,一切正常。

使用 ExtJS 获得 Basic/Digest/OAuth 身份验证的最佳方式是什么?Atm 我不确定在哪里设置用户名/密码。

谢谢

4

1 回答 1

0

如果你想在 ExtJS 中使用活塞,我建议编写一个匿名处理程序来检查用户是否通过标准身份验证登录。

尝试这个:

class AnonymousUserProfileHandler(BaseHandler):
    fields = ('title', 'url', 'affiliation')
    model = UserProfile

    def read(self, request, nickname):
        profile = UserProfile.objects.get(nickname=nickname)

        if request.user == profile.user:
            return profile

class UserProfileHandler(BaseHandler):
    anonymous = AnonymousUserProfileHandler
    allowed_methods = ('GET')
    fields = ('title', 'url', 'affiliation')
    model = UserProfile

    def read(self, request, nickname):
        profile = UserProfile.objects.get(nickname=nickname)
          return profile

在此示例中,当调用 UserProfileHandler 时,未经任何授权,它会委托给匿名处理程序。匿名处理程序检查用户是否通过通常的 request.user 模式登录。如果存在有效用户,则返回其配置文件对象。然后,显然,将调用它的视图标记为需要登录。

关键是:当 extJS 进行 JSON 调用时,它将通过通常的 cookie 发送身份验证数据。如果您在 Piston 中使用“匿名”处理程序,但在返回数据之前手动检查用户是否已登录,那么您基本上对自己的站点使用传统的身份验证。

于 2010-05-24T17:36:57.603 回答