1.DRF权限组件(局部+全局)
和上述的认证组件使用方式一样,定义一个权限类,必须要有def has_permission(self,request, view):pass方法,可以在类中定义变量message指定无权限时的提示内容。
权限组件也可以在视图中局部使用,或者在settings.py中进行全局配置
在有注册登录操作时,为了避免认证和权限,还是继承View最好或使用局部认证配置。
settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', 'rest_framework', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] REST_FRAMEWORK = { #认证配置(全局配置)----针对所有的继承APIView的类,最终都会有结果返回 'DEFAULT_AUTHENTICATION_CLASSES' : ['app01.utils.auth.MyAuth',],#可以自定义多个认证类 # 'UNAUTHENTICATED_USER':lambda :'匿名用户request.user自定义值',#request.user有默认值 # 'UNAUTHENTICATED_TOKEN':lambda :'request.auth自定义值',#request.auth有默认值 #权限配置(全局配置)----针对-针对所有的继承APIView的类,在认证之后执行,没有权限会返回message,有权限继续执行 'DEFAULT_PERMISSION_CLASSES':['app01.utils.permission.SVIPPermission',]#可以自定义多个权限 }