1.DRF权限组件(局部+全局) 

  和上述的认证组件使用方式一样,定义一个权限类,必须要有def has_permission(self,request, view):pass方法,可以在类中定义变量message指定无权限时的提示内容。

  权限组件也可以在视图中局部使用,或者在settings.py中进行全局配置

  在有注册登录操作时,为了避免认证和权限,还是继承View最好或使用局部认证配置。

   DRF权限组件

 

 

 

  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',]#可以自定义多个权限
 
}
settings.py

相关文章: