zoukankan      html  css  js  c++  java
  • Django权限和认证模块的解读

    from rest_framework.views import APIView
    

    找到APIView中的dispatch方法

    1562154350231

    1562154457775

    1562154688505


    1562154947771

    1562155005151

    1562155121061

    1562155353005

    
    class MyAuth:
        def authenticate(self):
            pass
    
    
    class Books(APIView):
        authentication_classes = [MyAuth]
    
        def get(self, request):
            pass
    

    认证组件的使用

    
    		-写一个认证类,继承BaseAuthentication
    			class MyAuth(BaseAuthentication):
    				def authenticate(self,request):
    					#写一些认证的逻辑
    					# print('我是认证类中的方法,只要配置了,一定会走我')
    					token=request.GET.get('token')
    					token_obj=models.Token.objects.filter(token=token).first()
    					if token_obj:
    						#有值表示登录了
    						#token_obj.user 当前登录的user对象
    						return token_obj.user,token_obj
    					else:
    						#没有值,表示没有登录,抛异常
    						raise AuthenticationFailed('您没有登录')
    		-局部使用
    			-在视图类中写
    				authentication_classes=[MyAuth,]
    		-全局使用
    			在settings.py中配置
    			REST_FRAMEWORK={
    				"DEFAULT_AUTHENTICATION_CLASSES":["app01.MyAuths.MyAuth",]
    			}
    		-局部禁用:
    			authentication_classes = []
    

    权限组件的使用

    	-写一个权限类,继承BasePermission
    			class MyPermision(BasePermission):
    				message = '不是超级用户,查看不了'
    				def has_permission(self,request,view):
    					#因为权限在认证之后执行的,所有能取到reuqest.user
    					if request.user.user_type==1:
    						return True
    					else:
    						return False
    			-局部使用
    				-在视图类中写
    					permission_classes=[MyPermision,]
    			-全局使用
    				在settings.py中配置
    				REST_FRAMEWORK={
    					"DEFAULT_PERMISSION_CLASSES":["app01.MyAuths.MyPermision",]
    				}
    			-局部禁用:
    				permission_classes = []
    			-读源码看到的东西:
    				-返回值显示中文,写个message=“中文”
    
  • 相关阅读:
    第一次开发分享的经验教训
    开发人员的 Linux 命令学习清单
    代码质量基本准则
    职业发展思考(二)
    软件调试的基本技巧
    多数据源的动态配置与加载使用兼框架交互的问题调试
    对象与并发:概述
    编程模式: 回调
    创新式开发探索(一) —— 开篇
    Linux 命令学习示例: tr
  • 原文地址:https://www.cnblogs.com/ruhai/p/11134625.html
Copyright © 2011-2022 走看看