认证组件

认证组件的书写

例:书写登录认证(LoginAuth)

第一步:新建一个py文件(以auth为例)

第二步:书写认证类,并继承BaseAuthentication

# 首先导入模块
from rest_framework.authentication import BaseAuthentication

# 书写认证类(以登录认证为例)
class LoginAuth(BaseAuthentication):

 

第三步:在类中重写authenticate方法,完成认证

class LoginAuth(BaseAuthentication):
    def authenticate(self, request):
        token = request.query_params.get('token')
        if not token:
            raise AuthenticationFailed('请先登录!')
        user_token = UserToken.objects.filter(token=token).first()
        if user_token:
            user = user_token.user
            return user, user_token
        else:
            raise AuthenticationFailed('token不合法!')

 

第四步:使用认证类

方式一:局部配置,在视图函数内书写:

class 视图类(APIView):
        authentication_classes = [LoginAuth]

 

方式二:全局配置,在settings配置文件中书写

REST_FRAMEWORK = {
        # 全局配置登录认证
        'DEFAULT_AUTHENTICATION_CLASSES': ['app01.auth.LoginAuth']
}

局部禁用:

class 视图类(APIView):
        authentication_classes = []

 

posted @ 2023-12-26 16:25  wellplayed  阅读(5)  评论(0编辑  收藏  举报