首先,创建一个名为 middleware.py 的文件,定义你的中间件:

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

然后,在你的 Django 项目的 settings.py 中注册这个中间件:

MIDDLEWARE = [
    # 其他中间件...
    'path.to.TokenValidationMiddleware',
    # 其他中间件...
]

确保将 ‘path.to.TokenValidationMiddleware’ 替换为你中间件的实际路径。中间件会按照在列表中的顺序顺序执行,所以确保它在其他可能影响请求处理的中间件之前或之后执行,具体取决于你的需求。
这是一个简单的例子,实际上,你可能需要使用更复杂的 Token 校验逻辑,例如使用 JSON Web Tokens(JWT)库进行签名和验证。

01-13 13:09