django-rest-framework(四)(权限)

本文介绍了Django Rest Framework的权限系统,包括基本使用、全局权限设置和框架内置的权限类,指导如何在settings中配置权限类以增强API的安全控制。
摘要由CSDN通过智能技术生成

权限

基本使用
class MyPermission(object):
    '''
    在权限类中的has_permission写入权限认证
    用户的权限类中返回参数有True,False
    True为通过权限认证,False为未通过权限认证
    '''
    def has_permission(self, request, view):
        # 用户登录成功后获得返回的信息,并将获取的信息封装在request中
        # 可以通过request.user, request.auth 获取返回元组的两个参数(user_token.user, user_token)
        # 第一个参数为用户对象,第二个对象为用户的token对象
        if request.user.user_type == 3:
            return True
        return False

class OrderView(APIView):
    '''
    订单相关业务,只有SVIP能够访问
    '''
    permission_classes = [MyPermission, ]
    def get(self, request, *args, **kwargs):
        # self.dispatch
        print(request.user, request.auth)
        ret = {'code': 1000, 'msg': None, 'data': None}
        ret['data'] = ORDER_DICT
        return JsonResponse(ret)
权限的全局使用
  • 将权限类写在新的地方
from rest_framework.permissions import BasePermission

class MyPermission(BasePermission):
    # 没有权限时,报的错误信息
    message = "必须是SVIP才能访问"
    def has_permission(self, request, view):
        if request.user.user_type == 3:
            return True
        return False
  • 在settting中新增配置
REST_FRAMEWORK = {
	#认证的相关信息
    'DEFAULT_AUTHENTICATION_CLASSES': ['api.utils.auth.MyAuthtication'],
    # 当认证为匿名用户时,request.user = '匿名用户'/None
    'UNAUTHENTICATED_USER': lambda: '匿名用户', # None
    # 当认证为匿名用户时,request.auth = None
    'UNAUTHENTICATED_TOKEN': None,

	#权限的相关信息
    'DEFAULT_PERMISSION_CLASSES': ['api.utils.permission.MyPermissio
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值