赞
踩
权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。
- # 限制只有超级用户能访问
- from rest_framework.permissions import BasePermission
- class UserPermission(BasePermission):
- message = '不是超级用户,查看不了'
- def has_permission(self, request, view):
- # user_type = request.user.get_user_type_display()
- # if user_type == '超级用户':
- # 权限在认证之后,所以能取到user
- user_type = request.user.user_type
- print(user_type)
- if user_type == 1:
- return True
- else:
- return False
- REST_FRAMEWORK={
- "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],
- "DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",]
- }
- # 局部使用只需要在视图类里加入:
- permission_classes = [UserPermission,]
- 如需自定义权限,需继承rest_framework.permissions.BasePermission父类,并实现以下两个任何一个方法或全部
- - `.has_permission(self, request, view)`
- 是否可以访问视图, view表示当前视图对象
-
- - `.has_object_permission(self, request, view, obj)`
- 是否可以访问数据对象, view表示当前视图, obj为数据对象
- from rest_framework.permissions import AllowAny,IsAuthenticated,IsAdminUser,IsAuthenticatedOrReadOnly
- - AllowAny 允许所有用户
- - IsAuthenticated 仅通过认证的用户
- - IsAdminUser 仅管理员用户
- - IsAuthenticatedOrReadOnly 已经登陆认证的用户可以对数据进行增删改操作,没有登陆认证的只能查看数据。
可以在配置文件中全局设置默认的权限管理类,如
- REST_FRAMEWORK = {
- ....
-
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.IsAuthenticated',
- )
- }
如果未指明,则采用如下默认配置
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.AllowAny',
- )
也可以在具体的视图中通过permission_classes属性来设置,如
- from rest_framework.permissions import IsAuthenticated
- from rest_framework.views import APIView
-
- class ExampleView(APIView):
- permission_classes = (IsAuthenticated,)
- ...
- # 创建超级用户,登陆到admin,创建普通用户(注意设置职员状态,也就是能登陆)
- # 全局配置IsAuthenticated
- # setting.py
- 'DEFAULT_PERMISSION_CLASSES': (
- 'rest_framework.permissions.IsAuthenticated',
- )
- # urls.py
- path('test/', views.TestView.as_view()),
- # views.py
- class TestView(APIView):
- def get(self,request):
- return Response({'msg':'个人中心'})
- # 登陆到admin后台后,直接访问可以,如果没登陆,不能访问
-
- ##注意:如果全局配置了
- rest_framework.permissions.IsAdminUser
- # 就只有管理员能访问,普通用户访问不了

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。