2017-12-14 15 views
1

우리는 클라이언트가 모든 세션을 인증해야한다는 클라이언트 요구 사항이 있습니다.플라스크 & 플라스크에서 세션 쿠키 제거 - 로그인

트릭을 할해야 세션 쿠키는하지만 사용자가 선택한 경우, 크롬, 파이어 폭스, 사파리 will persist이 세션 쿠키가 브라우저 옵션에서 "시작시 마지막 탭을 다시 열"(그것은 그들이 결국, 의미있는 기능) .

우리 고객은이 점이 마음에 들지 않으며 30 분 (사이트가 장시간 사용하지 않는 것이 좋습니다)과 같이 쿠키를 정말로 빨리 만료하는 것을 선호합니다.

나는 설정 플라스크-로그인을 통해 쿠키를 "기억"할 수 있어요,하지만 문제는 내가 할 경우에도, 플라스크-로그인 여전히 영구 쿠키가 만료 후에도 즉, 세션 쿠키 설정되어 있다는 것입니다 , 세션 1이 유지되고 사용자는 이고 여전히이 인증됩니다.

먼저 세션 쿠키를 완전히 비활성화하려면 어떻게해야합니까?

+1

는 당신이 시도? https://flask-login.readthedocs.io/en/latest/#fresh-logins –

+0

'세션이 파괴되어 "remember me"쿠키를 사용하여 다시 로그인 할 때 ... - 이것은 세션에 의존합니다. 우리가 직면 한 정확한 문제 (어떤 브라우저에서는 세션이 파괴되지 않음)와 처음부터 세션을 사용하지 않음으로써 해결하려고 시도한 것입니다. – kevlarr

+1

@OluwafemiSule @OluwafemiSule "... 부적절한"줄을 제거했습니다. 너무 주관적이었다.) – kevlarr

답변

1

당신이 지적했듯이 클라이언트 측에서 쿠키 동작을 100 % 제어 할 수 없기 때문에 가장 좋은 방법은 서버 측에서 처리하는 것입니다.

기본적으로 user_loader 콜백 함수를 변경하여 사용자의 활동 (마지막으로 보거나 마지막으로 로그인 한 시간)을 확인하려고합니다. 예를 들어

:

@lm.user_loader 
def load_user(id): 

    user = User.query.get(id) 

    if not user: 
     return None 

    minutes = 30 

    if user.last_seen < (datetime.utcnow() - timedelta(minutes=minutes)): 
     # Session has timed out 
     return None 

    return user