import uuid
from rest_framework.exceptions import AuthenticationFailed
# 认证组件
class Authortication:
def authenticate(self,request): # authenticate名字不能变
token = request.GET.get("token")
user = models.Token_user.objects.filter(token=token).first()
if user:
return None
else:
raise AuthenticationFailed("您还没有登录")
def authenticate_header(self, xx):
pass
# 需要被装饰认证的方法
class Books(APIView):
# authentication_classes 变量名不能变 = [ "装饰类的名字" ]
authentication_classes = [ Authortication ] # 哪里需要装饰认证写上
def get(self,request):
return Response("您已经登陆了")
class Login(APIView):
def post(self, request, *args, **kwargs):
response = {"status": 100, "msg": "登陆成功"}
name = request.data.get("name")
pwd = request.data.get("pwd")
user = models.User.objects.filter(name=name, pwd=pwd).first()
if user: # 登陆成功生成token
str = uuid.uuid4()
# 表示去数据库查,查到了更新,没查到插入数据
models.Token_user.objects.update_or_create(user=user, defaults={"token": str})
else:
response["msg"] = "账号或密码错误"
return Response(response)
def get(self, request, *args, **kwargs):
pass