from rest_framework.authentication import BaseAuthentication
from rest_framework import exceptions
from rest_framework.authtoken.models import Token
from django.contrib.sessions.backends.db import SessionStore
import time
from api.models import User

class TokenAuthentication(BaseAuthentication):
    def authenticate(self, request):
        try:
            auth_header = request.headers.get('Authorization', '')
            if auth_header.startswith('Token '):
                token = auth_header.split(' ')[1]
                if Token.objects.filter(key=token).exists():
                    user_id = Token.objects.filter(key=token).first().user_id
                    user= User.objects.get(id=user_id)
                    return (user, token)
                return None
            else:
                raise exceptions.AuthenticationFailed("用户信息认证失败")
            
            
        except Exception as error:
            print(error)
            raise exceptions.AuthenticationFailed("用户信息认证失败")