我正在实现一个可与 API 密钥或 CSRF 令牌配合使用的 API。目标是使其可由 Web 应用程序(受 CSRF 保护)或第三方应用程序(受 API 密钥保护)使用。
基本上,对于每个请求(全部通过 POST),我都会检查是否有 API 密钥。如果有有效的,就可以走了。如果没有,我想回退到验证 CSRF。
我可以调用一个函数来自己验证 CSRF 吗?视图本身是@csrf_exempt
因为 API 密钥需要起作用。
您可能可以子类化 CsrfViewMiddleware 类并重写 process_view 方法。然后包含您的自定义中间件而不是默认的 CSRF 中间件。
from django.middleware.csrf import CsrfViewMiddleware
class CustomCsrfMiddleware(CsrfViewMiddleware):
def process_view(self, request, callback, callback_args, callback_kwargs):
if request.META.get('api_key'):
# process api key
else:
return super(CsrfViewMiddleware, self).process_view(...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)