drf框架中认证与权限工做原理及设置

0909自我总结

drf框架中认证与权限工做原理及设置

一.概述

1.认证

工做原理python

  • 返回None => 游客
  • 返回user,auth => 登陆用户
  • 抛出异常 => 非法用户

前台对于用户信息进行的判断django

1)若是前台没有携带认证信息,直接定义为游客数组

2)若是前台携带了认证信息并认证经过,定位为登陆用户,将登陆的用户user对象保存在 requset.user 中session

3)若是前台携带了认证信息但没有认证经过,通常都定义为游客框架

4 ) 能够自定义为非法用户,抛出 认证失败 异常,可是不建议直接操做,能够交给权限组件进一步处理rest_framework.exceptions 的 AuthenticationFailed网站

参数rest

  • BasicAuthentication : 基本认证code

  • SessionAuthentication : session认证对象

2.权限

工做原理get

  • 返回False => 没有权限,将信息返回给前台
  • 返回True => 拥有权限,进行下一步认证(频率认证)

相关设置

  • AllowAny:容许全部用户
  • IsAuthenticated:只容许登陆用户
    • 必须request.user和request.user.is_authenticated都经过
  • IsAuthenticatedOrReadOnly:游客只读,登陆用户无限制
    • get、option、head 请求无限制
    • 前台请求必须校验 request.user和request.user.is_authenticated
  • IsAdminUser:是不是后台用户
    • 校验 request.user和request.user.is_staff is_staff(能够登陆后台管理系统的用户)

二.局部设置

即在咱们自定义的视图类开头设置

# 认证 下面不必定是[],也能够()就是须要在数组当中,多个类用,隔开
# 局部取消认证组件:authentication_classes = []
# 区别启用认证组件:authentication_classes = [认证类们] 
# 填写的参数BasicAuthentication,SessionAuthentication 


# 权限
# 局部取消权限组件:permission_classes = []
# 区别启用权限组件:permission_classes = [权限类们]
# 填写的参数AllowAny

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
 
class 类名(APIView):
    authentication_classes = (SessionAuthentication, BasicAuthentication)
    permission_classes = [IsAuthenticated,]
    ...........

三.全局设置

setting中设置

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        # django默认session校验:校验规则 游客 及 登陆用户
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        # 'rest_framework.permissions.AllowAny',
        # 全局配置:一站式网站(全部操做都须要登陆后才能访问)
        # 'rest_framework.permissions.IsAuthenticated',
    ],
}

四.失败返回的内容

  • 401 Unauthorized 未认证
  • 403 Permission Denied 权限被禁止
相关文章
相关标签/搜索