zoukankan      html  css  js  c++  java
  • 「Django」rest_framework学习系列-用户认证

    用户认证:
    1.项目下utils文件写auth.py文件

    from rest_framework import exceptions
    from api import models
    from rest_framework.authentication import BaseAuthentication
    #还有4个类可以继承
    class BasicAuthentication(BaseAuthentication)  可以弹出登录框
    class SessionAuthentication(BaseAuthentication):
    class TokenAuthentication(BaseAuthentication):
    class RemoteUserAuthentication(BaseAuthentication):
    
    class Authtication(BaseAuthentication):
        #用户认证类
        def authenticate(self,request):
            #源码方法重写
            token = request._request.GET.get('token')
            token_obj = models.UserToken.objects.filter(token=token).first()
            if not token_obj:
                raise exceptions.AuthenticationFailed('用户认证失败')
            #在rest framework内部会将这两个字段赋值给request,以供后续使用
            return (token_obj.user,token_obj)
    
        #认证失败之后返回给浏览器的请求头
        def authenticate_header(self,request):
            pass

    2、settings配置用户全局认证如下:

    'DEFAULT_AUTHENTICATION_CLASSES':['api.utils.auth.Authtication',], #用户全局认证

    3.views业务类可以在全局认证外设置单独认证规则

    authentication_classes = [] #已设置全局认证,此处即空认证

    4.源码认证流程图

    5.匿名用户全局配置:

    
    
    REST_FRAMEWORK = {'UNAUTHENTICATED_USER':None, #匿名,request.user = None 

    'UNAUTHENTICATED_TOKEN':None, #匿名,request.auth = None }
  • 相关阅读:
    zoj1942Frogger
    阿里云api调用做简单的cmdb
    约瑟夫环
    Bag标签之中的一个行代码实行中文分词实例3
    用lua扩展你的Nginx(整理)
    Single Number III
    TCP/IP ---分层
    TCP/IP --概述
    adb命令学习
    How to set Selenium Python WebDriver default timeout?
  • 原文地址:https://www.cnblogs.com/wrxblog/p/10400106.html
Copyright © 2011-2022 走看看