restframework的认证

有时我们的页面需要登录后才能查看,这时候就需要用到我们的认证组件

 

简单的写法:

from rest_framework.exceptions import AuthenticationFailed
from rest_framework.authentication import BaseAuthentication

class MyAuth(BaseAuthentication): def authenticate(self,request): # 写一些认证的逻辑 # print('认证类中的方法,只要配置了就会走') token = request.Get.get('token') token_obj = models.Token.objects.filter(token=token).first() if token_obj: # 没有值表示没有登录 return token_obj.user,token_obj else: raise AuthenticationFailed('您没有登录')

class Books(APIView): authentication_classes=[MyAuth,] def get(self,request): return Response()

.一般我们会单独写一个py文件,然后通过导入的方法

我们还可以设置全局和局部的认证

# 局部使用
    authentication_classes=[MyAuth,]

# 全局使用
    settings.py中写
    REST_FRAMEWORK={
        "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",]
    }

但是登录页面的话我们使用全局认证的话我们就进不去,所以还有局部禁用

只需要在不需要认证的类里加上这个命令就不会进行认证了

    # 局部禁用
    authentication_classes=[]

 

posted @ 2020-08-11 21:35  不忘初心❤  阅读(158)  评论(0编辑  收藏  举报