使用Django rest框架,我创建了一个API端点,我在静态文件中调用该端点,我想将CSRF令牌传递到该端点中,以便我是唯一可以访问API的人。
我的Django站点没有的用户登录。
我基本上想在我的API端点中做这样的事情
@api_view(['POST'])
def payment(request, *args, **kwargs):
if (("Authorization" not in requests.headers) or (request.headers["Authorization"] != "token")):
return Response({"Error": "Not authorized for access."})
# ...
我需要一次性生成一个令牌并重复使用吗?
或者我可以在每次使用脚本时生成一个吗?
如何访问HTML文件中的csrf令牌?
我使用的是基于类的视图,我假设我会将其传递给get_context_data
,但我如何设置API端点以接受此CSRF令牌?
我建议直接从django restframework使用TokenAuthentication
:https://www.django-rest-framework.org/api-guide/authentication/
然后,您将在所有请求的标头中传递令牌如Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
如果使用django-restframework中的decorator,则可以跳过所有自定义令牌验证,因为这是由django-restframework完成的。
@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def payment(request, *args, **kwargs):
# ...