django 自定义中间件 接口装饰器
在Django中,可以通过自定义中间件或装饰器来增加接口访问的控制。以下是一个简单的自定义中间件示例,用于验证接口访问的合法性:
首先,在你的Django应用中创建一个新的中间件文件,例如 middleware.py
,然后添加以下代码:
from django.utils.deprecation import MiddlewareMixin
from django.http import JsonResponse
class APIAuthMiddleware(MiddlewareMixin):
def process_request(self, request):
# 这里可以添加你的验证逻辑,例如检查请求头或者参数
api_key = request.GET.get('api_key')
if api_key != 'your_secret_key':
return JsonResponse({'error': 'Invalid API key'}, status=403)
def process_response(self, request, response):
# 如果需要对响应做处理,可以在这里添加代码
return response
然后,在你的 settings.py
文件中添加这个中间件:
MIDDLEWARE = [
# ...
'path.to.your.middleware.APIAuthMiddleware', # 确保路径正确指向你的中间件文件
# ...
]
这样,每次请求接口时,都会先通过这个中间件的 process_request
方法进行验证。如果API key不正确,则中间件会直接返回一个包含错误信息的JSON响应,状态码为403,从而阻断后续的视图处理。
如果你想要使用装饰器来实现类似的功能,可以在视图函数上应用装饰器:
from functools import wraps
from django.http import JsonResponse
def api_auth(view_func):
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
api_key = request.GET.get('api_key')
if api_key != 'your_secret_key':
return JsonResponse({'error': 'Invalid API key'}, status=403)
return view_func(request, *args, **kwargs)
return _wrapped_view
@api_auth
def my_view(request):
# 视图逻辑
pass
在这个装饰器中,同样通过检查API key来确认请求的合法性。如果API key不正确,装饰器会直接返回一个错误响应,否则它会允许请求继续执行视图函数。
评论已关闭