retain form data when a user session expires while filling a form

90 views
Skip to first unread message

Vijay Shanker

unread,
Apr 12, 2018, 7:21:08 AM4/12/18
to Django users

I have to code this scenario:

Some user comes to fill a form and while user is at it, session expires; User tries to submit form, as session has expired it will take him to login page after which he is rediredted to form page with a prefilled form with data he filled previously.

my propsed solution: on form submit, check if user session is expired with an ajax call, if yes, drop a cookie with values of filled form, user comes back to same form, prefill the form from cookie value.

how far I got: not much; I used ajax call to check session expiry with a backend call to this function:

def check_valid_session(request):
    session_expiry_date = request.session.get_expiry_date()
    now = datetime.now()
    seconds_left = (session_expiry_date - now).total_seconds()
    if seconds_left <= 0:
        return JsonResponse({'session_expired': True, 'seconds_left': seconds_left })
    else:
        return JsonResponse({'session_expired':False, 'seconds_left': seconds_left})

in my settings I have:

SESSION_COOKIE_NAME = "sso-sessionid"
SESSION_COOKIE_HTTPONLY = False
SESSION_COOKIE_AGE = 10 
SESSION_COOKIE_DOMAIN = '.mydomain.com'
SESSION_COOKIE_SECURE = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

but in response, I always get seconds_left as something close to 9.999. and session_expiry_date keeps increasing itself by 10 seconds each time i hit submit and call the backend code above. How to get correct session expire time?

Avraham Serour

unread,
Apr 13, 2018, 3:53:21 AM4/13/18
to django-users
You may also always save to cookie before submitting the form and clear it on the thank you page

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e623b707-2014-4511-91f4-7a00420fe196%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages