今天我试图让django-piston和ExtJS工作。我使用ExtJS restful示例和活塞示例来创建一个小小的restful webapp。除了身份验证之外,一切正常。
使用ExtJS进行Basic / Digest / OAuth身份验证的最佳方法是什么? Atm我不知道在哪里设置用户名/密码。
由于
答案 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中使用“匿名”处理程序,但在返回数据之前手动检查用户是否已登录,则您基本上将传统身份验证用于您自己的站点。