drf框架中认证与权限工作原理及设置
程序员文章站
2023-11-22 12:51:46
0909自我总结 drf框架中认证与权限工作原理及设置 一.概述 1.认证 返回None = 游客 返回user,auth = 登录用户 抛出异常 = 非法用户 1)如果前台没有携带认证信息,直接定义为游客 2)如果前台携带了认证信息并认证通过,定位为登录用户,将登录的用户user对象保存在 req ......
0909自我总结
drf框架中认证与权限工作原理及设置
一.概述
1.认证
工作原理
- 返回none => 游客
- 返回user,auth => 登录用户
- 抛出异常 => 非法用户
前台对于用户信息进行的判断
1)如果前台没有携带认证信息,直接定义为游客
2)如果前台携带了认证信息并认证通过,定位为登录用户,将登录的用户user对象保存在 requset.user 中
3)如果前台携带了认证信息但没有认证通过,一般都定义为游客
4 ) 可以自定义为非法用户,抛出 认证失败 异常,但是不建议直接操作
,可以交给权限组件进一步处理rest_framework.exceptions 的 authenticationfailed
参数
basicauthentication : 基本认证
sessionauthentication : session认证
2.权限
工作原理
- 返回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 权限被禁止