2014-07-05 2 views
1

플라스크 웹 앱에 비밀번호 재설정 기능을 추가하는 중입니다.플라스크 로그인을 사용하여 특정 사용자 로그 아웃

비밀번호가 재설정되면 해당 사용자 이름으로 로그인 한 모든 사용자를 로그 아웃하고 싶습니다. Flask-Login에서 제공하는 logout_user() 메서드에 대해 알고 있습니다. 내 응용 프로그램에서 암호 재설정은 사용자가 로그인하지 않은 상태에서 전자 메일 확인을 사용하여 수행됩니다. 기본적으로 "비밀번호 찾기"기능입니다. 나는 logout_user(specific_user) 같은 것을 찾고 있습니다. 또는 특정 사용자 쿠키를 무효화하는 방법? 이 라인을 따라 뭔가.

현재 사용자 자격 증명을 도용하여 암호를 재설정하면 도용 된 자격 증명을 가진 사람이 로그인되어 있고 웹 응용 프로그램에 액세스 할 수 있기 때문에이 작업을 수행하고 싶습니다.

+0

_ 현재 사용자 자격 증명이 도난 당했을 때 비밀번호를 재설정하면 도용 된 자격 증명을 가진 사람이 로그인되어 있고 웹 앱에 액세스 할 수 있기 때문에이 작업을 수행하고 싶습니다. " 의미 ** 정확히 ** 당신이 "자격 증명"이라고 말하면, 사용자 이름과 암호가 사용자를 로깅하면이 상황에 도움이되지 않기 때문입니다. –

+0

신임장은 귀하가 언급 한 내용입니다. 앱에서 먼저 비밀번호를 재설정하겠다는 확인 이메일을 사용자에게 보냅니다. 전자 메일에서 확인 링크를 클릭하면 새 암호가 생성되어 전자 메일로 전송됩니다. 이 이메일 주소에 액세스 할 수없는 사용자는이 새 비밀번호를 알 수 없습니다. 그들이 강제로 로그 아웃 될 수 있다면 다시 로그인 할 수 없습니다. – robsco

+2

@BurhanKhalid : 확실합니다; 암호 *도 변경된 경우. –

답변

1

암호 재설정의 타임 스탬프를 저장하고이를 사용자 쿠키와 비교해야합니다. 쿠키가 생성 된 후 암호가 재설정 된 경우 사용자에게 로그인/암호를 다시 제공하도록 요청합니다.

플라스크 로그인 쿠키는 기본적으로 타임 스탬프를 포함하지 않으므로 약간 수정해야합니다.

Flask-Login의 GitHub를 표준 유스 케이스로 게시하는 것이 좋습니다.

편집 : 실제로 더 좋은 방법은 https://flask-login.readthedocs.org/en/latest/#alternative-tokens입니다. 그것은 사용자 암호 해쉬 (다른 것들 중에서)를 사용하여 "Remember Me"쿠키에 서명하는 것입니다. 이렇게하면 암호가 변경되면 쿠키가 사실 확인되지 않습니다.

+0

내가 한 것은 문서에서 설명 된 단계를 따르고있었습니다. 'LoginManager' 객체에'token_loader' 콜백 함수를 설정하고'User' 클래스에'get_auth_token' 함수를 만들었습니다. 나를 위해 속임수가 될 듯 - 난 완전히 이것을 테스트하지 못했습니다 - 설정 'PERMANENT_SESSION_LIFETIME = 0' 응용 프로그램 구성. "Remember Me"쿠키는 사용자 세션이 만료되었을 때 Flask-Login에 의해서만 보입니다. 현재 각 요청에서 "Remember Me"토큰을 인코딩하고 디코딩하는 데 필요한 추가 오버 헤드로 인해 5 분 세션 수명을 사용하고 있습니다. – robsco

+0

내 솔루션으로 예상 할 수있는 한 가지 문제점은 암호 변경으로 인해 잘못된 세션을 실행하는 로그인 한 사용자가 세션을 활성 상태로 유지하기 위해 4 분마다 페이지를 새로 고칠 수 있다는 것입니다. – robsco

관련 문제