gpt4 book ai didi

ajax - 我如何检查用户是否已经通过了tastypie 的身份验证?

转载 作者:行者123 更新时间:2023-12-04 00:42:50 28 4
gpt4 key购买 nike

当用户在 Django 中进行身份验证时,我如何从 Tastypie 中检查?

用户登录后,该 View 将包含一些从 API 中提取数据的 JS,该 API 由tastypie 提供支持。

我在我的资源上设置了基本的身份验证/django 授权,因此浏览器会弹出 http 身份验证窗口。有什么办法可以避免这种情况吗?

到目前为止,我的想法是扩展 BasicAuthentication 以便它首先检查 session 数据,当找不到它时,它会回退到 http auth? AFAIK AJAX 调用包括 session 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)

这似乎做我想做的。如果用户已登录,则 session 包含 _auth_user_id ,如果没有,则 key 丢失。

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

关于ajax - 我如何检查用户是否已经通过了tastypie 的身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com