| """ |
| 系统: |
| 1)AllowAny:允许所有用户,校验方法直接返回True |
| 2)IsAuthenticated:只允许登录用户 |
| 必须request.user和request.user.is_authenticated都通过 |
| 3)IsAuthenticatedOrReadOnly:游客只读,登录用户无限制 |
| get、option、head 请求无限制 |
| 前台请求必须校验 request.user和request.user.is_authenticated |
| 4)IsAdminUser:是否是后台用户 |
| 校验 request.user和request.user.is_staff is_staff(可以登录后台管理系统的用户) |
| |
| 自定义:基于auth的Group与Permission表 |
| 1)自定义权限类,继承BasePermission,重写has_permission |
| 2)has_permission中完成 |
| 拿到登录用户 user <= request.user |
| 校验user的分组或是权限 |
| 前两步操作失败 返回False => 无权限 |
| 前两步操作成功 返回True => 有权限 |
| """ |
| from rest_framework.permissions import BasePermission |
| |
| class AdminPermission(BasePermission): |
| |
| def has_permission(self, request, view): |
| |
| |
| user = request.user |
| if not user: |
| return False |
| |
| if not user.groups.filter(name='管理员'): |
| return False |
| |
| return True |