middleware.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #### 自定义中间件的请求
  2. import time
  3. from django.utils.deprecation import MiddlewareMixin #### 导入包文件
  4. from django.http import JsonResponse
  5. from DCbackend.utils.common import fail
  6. from .models import *
  7. API_WHITELIST = ["/user/login", "/user/create"]
  8. #### 定义中间件的类方法
  9. class Authorization(MiddlewareMixin):
  10. ### 前置拦截器,请求前触发的方法
  11. def process_request(self, request):
  12. try:
  13. #### 判断请求的如果不是登录的Api接口,判断token的内容
  14. if request.path not in API_WHITELIST:
  15. #### 获取token值
  16. token = request.POST.get("token")
  17. #### 没有传递token值
  18. if not token:
  19. return fail("token无效")
  20. ### 通过token值获取用户的信息,判断token是否合理
  21. user = Admin.objects.filter(token=token).first()
  22. #### 没有token值
  23. if not user:
  24. return fail("token已过期,或者用户不存在")
  25. request.session['user_id'] = user.id
  26. #### 判断用户的时间是否过期
  27. # if user.expired_at < time.time():
  28. # return JsonResponse({
  29. # 'code': 401,
  30. # 'msg': 'token已经过期'
  31. # })
  32. except Exception:
  33. return fail("token 无效")