drf 简单认证
认证类(不能写在视图里)
rom rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed
class MyAuthentication(BaseAuthentication):
def authenticate(self, request):
'''
去做用户认证
1.读取请求传递的token
2.校验token合法性
3.返回值
3.1元组 (request.user,request.auth) 认证成功
3.2抛出异常 认证失败
3.3返回None 多个认证类[认证类1,认证类2,认证类3,认证类4] 匿名
'''
token = request.query_params.get('token')
if token:
return 'szw', token
# raise AuthenticationFailed('认证失败')
raise AuthenticationFailed({'code': 999, 'error': '认证失败'})
配置项settings
REST_FRAMEWORK = {
# 认证类
"DEFAULT_AUTHENTICATION_CLASSES": ['ext.auth.MyAuthentication']
}
视图类
# 无需登录
class LoginView(APIView):
# 优先读取配置项,在读取这里,后读取覆盖先读取
authentication_classes = []
def get(self, request):
print(request.user, request.auth)
return Response({'status': 'LoginView'})
# 需登录
class OrderView(APIView):
def get(self, request):
print(request.user, request.auth)
return Response({'status': 'OrderView'})
# 需登录
class UserView(APIView):
def get(self, request):
return Response({'status': 'UserView'})
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16744835.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步