当用户在Django中进行身份验证时,如何从tastypie中检查?
用户登录后,该视图包含一些从API中提取数据的JS,该数据由tastypie支持.
我在资源上设置了基本身份验证/ djangoa授权,所以浏览器会弹出http auth窗口.有什么办法可以避免吗?
到目前为止,我的想法是扩展BasicAuthentication,以便它首先检查会话数据,何时找不到它,它将返回到http auth? AFAIK AJAX调用包括会话cookie,所以这在理论上应该工作?有没有人做过类似的事情?
我有这个解决方案到目前为止:
class MyBasicAuthentication(BasicAuthentication):
def __init__(self,*args,**kwargs):
super(MyBasicAuthentication,self).__init__(*args,**kwargs)
def is_authenticated(self,request,**kwargs):
from django.contrib.sessions.models import Session
if 'sessionid' in request.COOKIES:
s = Session.objects.get(pk=request.COOKIES['sessionid'])
if '_auth_user_id' in s.get_decoded():
u = User.objects.get(id=s.get_decoded()['_auth_user_id'])
request.user = u
return True
return super(MyBasicAuthentication,self).is_authenticated(request,**kwargs)
这似乎是我想要的.如果用户登录,则会话包含_auth_user_id,如果没有,则该密钥丢失.
任何人都可以想到这种方法可能导致的任何问题