我要设计的API需要以下功能:
步骤1. GET / login /应该返回带有csrftoken和会话ID的响应。
STEP2。用户可以通过发送POST / login /(带有csrftoken和会话ID作为标题)和csrfmiddlewaretoken以及表单参数来执行登录。
STEP3。成功登录后,POST / login /响应将包含一个新的会话ID,该会话ID将沿着标头发送以用于将来的请求,并向服务器证明用户已登录。
STEP4。对于其他API POST应用,将使用在步骤3中获得的会话ID和在步骤1中获得的csrftoken。
我无法实现此行为。 Django不返回GET / login /的会话ID,因此我可以通过在/ login / views.py中添加以下内容来实现此目的:
if hasattr(request, 'session') and not request.session.session_key:
request.session.save()
request.session.modified = True
这成功返回了GET / login /的会话ID,稍后当我为POST / login /调用authenticate(user,passwd)时,会话ID被重置。
现在,我的问题:
在身份验证之前启用会话ID并确保会话ID在成功身份验证后重置的正确方法是什么?
我注意到在调用authenticate()时csrftoken被重置。成功通过身份验证后,如何保留在前面提到的STEP 1中发送的相同csrftoken,以在以后的POST请求中使用。