加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 如何检查该用户已经通过tastypie认证?

发布时间:2020-12-16 03:05:53 所属栏目:百科 来源:网络整理
导读:当用户在Django中进行身份验证时,如何从tastypie中检查? 用户登录后,该视图包含一些从API中提取数据的JS,该数据由tastypie支持. 我在资源上设置了基本身份验证/ djangoa授权,所以浏览器会弹出http auth窗口.有什么办法可以避免吗? 到目前为止,我的想法是扩
当用户在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,如果没有,则该密钥丢失.

任何人都可以想到这种方法可能导致的任何问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读