(O)用ExtJS认证

时间:2010-04-20 18:34:55

标签: extjs oauth django-piston

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

使用ExtJS进行Basic / Digest / OAuth身份验证的最佳方法是什么? Atm我不知道在哪里设置用户名/密码。

由于

1 个答案:

答案 0 :(得分: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中使用“匿名”处理程序,但在返回数据之前手动检查用户是否已登录,则您基本上将传统身份验证用于您自己的站点。