restframwork组件的权限认证
Posted wen-kang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了restframwork组件的权限认证相关的知识,希望对你有一定的参考价值。
在一个视图类下重写 authentication_classes = [TokenAuth,]然后去认证类TokenAuth里面实现认证逻辑代码
认证类代码块:
1 class TokenAuth(BaseAuthentication):
2 def authenticate(self,request):
3 token=request.GET.get("token")
4 token_obj=Token.objects.filter(token=token).first()
5 if not token_obj:
6 raise exceptions.AuthenticationFailed("用户验证失败,500")
7 else:
8 return token_obj.user,token_obj.token
可以继承基类object,但是需要重写两个方法authenticate和authenticate_header
from rest_framework.authentication import BaseAuthentication 导入模板类便于继承
直接继承 BaseAuthentication 可以只重写前面一个
视图类代码块:
1 class BookShow(viewsets.ModelViewSet):
2 authentication_classes = [TokenAuth,]
3
4 queryset = Book.objects.all()
5 serializer_class = BookModelSerializers
6 def list(self, request, *args, **kwargs):
7 print(request.user)
8 print(request.auth)
9 book_list=Book.objects.all()
10 bs=BookModelSerializers(book_list,many=True,context={"request":request})
11 return Response(bs.data)
以上是关于restframwork组件的权限认证的主要内容,如果未能解决你的问题,请参考以下文章
drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用