설명대로 SESSION_EXPIRE_AT_BROWSER_CLOSE 및 SESSION_COOKIE_AGE는 호환되지 않습니다. 만기일을 쿠키로 설정하면이 쿠키는 브라우저 길이의 쿠키가되지 않습니다.
그런 다음 원하는 동작을 수행하려면 을 SESSION_EXPIRE_AT_BROWSER_CLOSE을 True로 설정하고 만료 시간 제한을 손으로으로 설정해야합니다.
손으로 제어하는 우아한 방법은 시간 제한이 만료 :
- 가 타임 아웃을 제어하는 새로운 custom middleware을 만듭니다.
- 맞춤 미들웨어 (및 세션)를 활성화하려면 settings.py를 수정하십시오.
class timeOutMiddleware(object):
def process_request(self, request):
if request.user.is_authenticated():
if 'lastRequest' in request.session:
elapsedTime = datetime.datetime.now() - \
request.session['lastRequest']
if elapsedTime.seconds > 15*60:
del request.session['lastRequest']
logout(request)
request.session['lastRequest'] = datetime.datetime.now()
else:
if 'lastRequest' in request.session:
del request.session['lastRequest']
return None
이 lastRequest
를 저장하기 위해 sessions을 가능하게 기억 :
시간 제한 지정 미들웨어 캔처럼 보인다.
이 솔루션은 작성되었으며 테스트되었으며 현재 내 사이트에서 작업 중입니다.) ... 장고 1.6 (뉴
... 2 년 후)
날짜 시간하고 PickleSerializer를 사용하는 경우 timedelta 값은 직렬화이다;이 코드는 GNU 라이센스를 가지고있다. 그렇지 않다면 아마도 쉬운 해결책은 translate datetime to unix timestamp and back입니다. 이 번역 아래에 자유롭게 게시하십시오.
편집
django-session-security 응용 프로그램은 비활성 인증 된 사용자를 로그 아웃 할 수있는 메커니즘을 제공합니다. 보세요.
매력처럼! 고마워! – laffuste
홍콩에 거주 하시겠습니까? – danihp
Empece a viajar 아니 아니 quise volver;) para como han dejado el pais politicos y banqueros ... – laffuste