认证组件
认证组件的书写
例:书写登录认证(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 = []