在使用POST接口的时候经常会出现403的情况,这是CRSF的认证,下面说说CRSF的认证情况
一、在setting中MIDDLEWARE,这儿的加上认证,代表的是全局认证,

如果你不想让CSRF在网站里面进行认证,可以直接注释掉红色框中的就可以
二、如果想让你的函数里面有一个函数不需要认证,怎么操作呢?就需要引入第三方包,在使用装饰器@csrf_exempt就可以,比如:
from django.views.decorators.csrf import csrf_exempt
#取消csrf校验
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from django.views import View
@csrf_exempt##取消csrf认证
class TestView(View):
def get(self,request,*args,**kwargs):
return HttpResponse('GET')
def post(self,request,*args,**kwargs):
return HttpResponse('POST')
def put(self,request,*args,**kwargs):
return HttpResponse('PUT')
def delete(self,request,*args,**kwargs):
return HttpResponse('DELETE')
这个时候可以不用管setting里面的crsf的配置,不需要注释csrf配置
三、如果不想全局配置csrf,只配置类,或者函数里面一个函数需要认证,怎么操作呢,
还是需要导入第三包 from django.views.decorators.csrf import csrf_protect
比如
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.http import HttpResponse
from django.views import View
#@csrf_exempt
@csrf_protect##添加认证
class TestView(View):
def get(self,request,*args,**kwargs):
return HttpResponse('GET')
def post(self,request,*args,**kwargs):
return HttpResponse('POST')
def put(self,request,*args,**kwargs):
return HttpResponse('PUT')
def delete(self,request,*args,**kwargs):
return HttpResponse('DELETE')
注意:
我们在做登录用户验证时,需要使用到token,这个时候就有问题了,在使用token,按照我们上面的操作,发现crsf验证不起作用了,怎么做呢
这儿介绍一个方法,使用第三包导入from django.utils.decorators import method_decorator,还是用装饰器操作
比如:
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.http import HttpResponse
from django.views import View
from django.utils.decorators import method_decorator
#csrf_exempt这儿的csrf只是当做参数使用
@method_decorator(csrf_exempt,name='dispatch')
class TestView(View):
def get(self,request,*args,**kwargs):
return HttpResponse('GET')
def post(self,request,*args,**kwargs):
return HttpResponse('POST')
def put(self,request,*args,**kwargs):
return HttpResponse('PUT')
def delete(self,request,*args,**kwargs):
return HttpResponse('DELETE')
好,本篇文章到此结束。
本文介绍了Django中CSRF的认证过程,包括全局启用和禁用方法。在settings.py中添加或注释MIDDLEWARE进行全局设置。若要特定函数免于CSRF认证,可使用@csrf_exempt装饰器。对于类或特定函数的认证需求,可使用@csrf_protect。在涉及token验证时,需结合method_decorator来确保CSRF验证生效。
245

被折叠的 条评论
为什么被折叠?



