问题描述
我在'decorators.py'文件中创建了一个装饰器'unauthenticated_user(view_func)',如果当前用户未通过身份验证,该装饰器将限制用户访问视图。
在“ unauthenticated_user()”函数中,有一个条件“ request.user.is_authenticated”,如果对令牌附加的用户进行了身份验证,则应返回true。但是,在测试此功能时,我注意到“ decorators.py”中的“ request.user”并不总是等于“ views.py”中“ self.request.user”返回的正确值。取而代之的是,它通常会返回以前登录的用户,或者返回“ AnonymousUser”,这会破坏功能。
decorators.py:
def unauthenticated_user(view_func):
def wrapper_func(request,*args,**kwargs):
if request.user.is_authenticated:
return view_func(request,**kwargs)
else:
return HttpResponse('No user logged in')
return wrapper_func
views.py:
@method_decorator(unauthenticated_user,name = 'dispatch')
class UserLogout(APIView):
...
这是我用来测试当decorators.py函数返回'AnonymousUser'时实际上是否有经过身份验证的用户的views.py函数:
class Current(APIView):
def get(self,request,format = None):
try:
return Response(self.request.user.is_authenticated)
except:
return Response("no user currently logged in")
如何确保“ decorators.py”,“ unauthenticated_user”功能可以访问当前请求中的用户,就像“ views.py”中的“当前”视图一样?
任何帮助将不胜感激。据我所知,在“ decorators.py”函数中无法调用“自我”。
谢谢,Grae
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)