onceperrequestfilter拦截token代码实现
时间: 2023-07-11 07:09:27 浏览: 55
对于这个问题,我理解你是在询问一种保护 API 接口的方法,即在每个 HTTP 请求中都需要携带有效的 token,而 onceperrequestfilter 是一种 Django 自带的中间件,用于在每个请求(request)被处理之前,对其进行一些额外的处理。因此,可以使用 onceperrequestfilter 在请求处理前对 token 进行验证和拦截的操作。
具体实现代码如下:
```python
from django.utils.deprecation import MiddlewareMixin
from django.http import JsonResponse
class OncePerRequestFilter(MiddlewareMixin):
def process_request(self, request):
if 'token' not in request.headers:
# 如果请求头中没有 token,则拦截请求,返回错误响应
return JsonResponse({'code': 401, 'message': 'Unauthorized'})
# 对 token 进行验证
token = request.headers['token']
if not verify_token(token):
return JsonResponse({'code': 401, 'message': 'Unauthorized'})
```
其中,verify_token 是你自己定义的一个函数,用于验证 token 的有效性。 如果 token 无效,则返回 False,否则返回 True。在验证成功之后,接口继续执行,否则返回 401 错误响应。