from django.http import JsonResponse
class TokenValidationMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 在请求处理之前执行的代码
# 获取请求中的 Token
token = request.META.get('HTTP_AUTHORIZATION', None)
# 校验 Token,这里你可以使用你自己的校验逻辑
if not self.is_valid_token(token):
return JsonResponse({'error': 'Invalid token'}, status=401)
# 请求继续传递给下一个中间件或视图
response = self.get_response(request)
# 在请求处理之后执行的代码
return response
def is_valid_token(self, token):
# 这里是校验 Token 的具体逻辑,可以根据你的需求进行定制
# 返回 True 表示 Token 有效,返回 False 表示无效
# 你可以使用任何 Token 校验库,如 `python-jose`、`PyJWT` 等
# 示例:假设 Token 是一个简单的字符串,长度大于等于 10 就认为有效
return token is not None and len(token) >= 10
MIDDLEWARE = [
# 其他中间件...
'path.to.TokenValidationMiddleware',
# 其他中间件...
]
确保将 ‘path.to.TokenValidationMiddleware’ 替换为你中间件的实际路径。中间件会按照在列表中的顺序顺序执行,所以确保它在其他可能影响请求处理的中间件之前或之后执行,具体取决于你的需求。
这是一个简单的例子,实际上,你可能需要使用更复杂的 Token 校验逻辑,例如使用 JSON Web Tokens(JWT)库进行签名和验证。