权限permissions
权限验证必须要在认证之后验证
权限组件也不用多说,读了源码你就很清楚了,跟认证组件很类似
具体的源码就不展示,自己去读吧,都在这里:
局部权限
设置model表,其中的type就是用户类型
数据库:
在根目录创建utils,utils创建permission文件,在其中定义权限类,自定义的权限类必须继承BasePermission类,且必须定义has_permission方法,其中message是权限验证没通过时显示的字段
url:
view:
开始访问,刚才说了权限是在用户登录认证之后做的处理,所以也必须带上token访问:
好现在是无权访问,修改用户的type为1看看:
重启项目再次访问:
如果不带token访问:
所以其实在定义的权限类那里可以先作判断是否用户已通过认证,这个可以自行研究
主要代码:
view:
from rest_framework.views import APIView from rest_framework.views import Response from utils.auth import MyAuth from utils.permisson import MyPermission from DRF.models import User import uuid class DemoView(APIView): def get(self, request): return Response('简单认证') class LoginView(APIView): def get(self, request): return Response('请登录,如果没有账号请创建') def post(self, request): user = request.data.get('user') pwd = request.data.get('pwd') token = uuid.uuid4() User.objects.create(user=user, pwd=pwd, token=token) return Response('创建用户成功') class TestView(APIView): authentication_classes = [MyAuth, ] permission_classes = [MyPermission, ] def get(self, request): return Response('权限等级测试,VIP用户您好,欢迎访问XX。。。')