How to expire session due to inactivity in Django?

后端 未结 6 1620
一整个雨季
一整个雨季 2020-11-28 00:52

Our Django application has the following session management requirements.

  1. Sessions expire when the user closes the browser.
  2. Sessions expire after a pe
6条回答
  •  萌比男神i
    2020-11-28 01:39

    I am just pretty new to use Django.

    I wanted to make session expire if logged user close browser or are in idle(inactivity timeout) for some amount of time. When I googled it to figure out, this SOF question came up first. Thanks to nice answer, I looked up resources to understand how middlewares works during request/response cycle in Django. It was very helpful.

    I was about to apply custom middleware into my code following top answer in here. But I was still little bit suspicious because best answer in here was edited in 2011. I took more time to search little bit from recent search result and came up with simple way.

    SESSION_EXPIRE_AT_BROWSER_CLOSE = True
    SESSION_COOKIE_AGE = 10 # set just 10 seconds to test
    SESSION_SAVE_EVERY_REQUEST = True
    

    I didn't check other browsers but chrome. 1. A session expired when I closed a browser even if SESSION_COOKIE_AGE set. 2. Only when I was idle for more than 10 seconds, A session expired. Thanks to SESSION_SAVE_EVERY_REQUEST, whenever you occur new request, It saves the session and updates timeout to expire

    To change this default behavior, set the SESSION_SAVE_EVERY_REQUEST setting to True. When set to True, Django will save the session to the database on every single request.

    Note that the session cookie is only sent when a session has been created or modified. If SESSION_SAVE_EVERY_REQUEST is True, the session cookie will be sent on every request.

    Similarly, the expires part of a session cookie is updated each time the session cookie is sent.

    django manual 1.10

    I just leave answer so that some people who is a kind of new in Django like me don't spend much time to find out solution as a way I did.

提交回复
热议问题