def process_response(self, request, response):
"""
If request.session was modified, or if the configuration is to save the
session every time, save the changes and set a session cookie or delete
the session cookie if the session has been emptied.
"""
try:
accessed = request.session.accessed
modified = request.session.modified
empty = request.session.is_empty()
if not request.body:
user = None
else:
try:
query = json.loads(request.body)
user = APIAI.get_context_params(query, 'user')
except (JSONDecodeError, KeyError, ValueError):
user = None
except AttributeError:
pass
else:
# First check if we need to delete this cookie.
# The session should be deleted only if the session is entirely empty
if user is not None and empty:
pass
# delete session key here
else:
if accessed:
# patch_vary_headers(response, ('Cookie',))
pass
if (modified or settings.SESSION_SAVE_EVERY_REQUEST) and not empty:
if request.session.get_expire_at_browser_close():
max_age = None
expires = None
else:
max_age = request.session.get_expiry_age()
expires_time = time.time() + max_age
expires = cookie_date(expires_time)
# Save the session data and refresh the client cookie.
# Skip session save for 500 responses, refs #3881.
if response.status_code != 500:
try:
request.session.save()
except UpdateError:
# The user is now logged out; redirecting to same
# page will result in a redirect to the login page
# if required.
# return redirect(request.path)
return response
# response.set_cookie(
# settings.SESSION_COOKIE_NAME,
# request.session.session_key, max_age=max_age,
# expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
# path=settings.SESSION_COOKIE_PATH,
# secure=settings.SESSION_COOKIE_SECURE or None,
# httponly=settings.SESSION_COOKIE_HTTPONLY or None,
# )
return response
评论列表
文章目录