2016-10-13 2 views
2

私はFlask-loginremember=Falseを使用しています(唯一のクッキーはsessionクッキーです)。コピー・貼り付けをログアウトした後sessionクッキーが、何らかの理由でセッションがまだ有効であり、ユーザーがログインしている場合はログアウトし、セッションがフラスコlogout_user()機能で適切に削除されたにもかかわらず - 。["user_id"]があったことを意味session辞書から削除されました。セッションが古いCookieから復元されたようです。誰かが説明できますか?フラスコログイン再利用可能なクッキー

答えて

1

私はそれを自分で調査していますように私は本当に、まだこのための正しい答えを持っていないが、私はここにしたいと思いポイントがいくつかあります:

logout_userを()フラスコログインから行いますセッションを無効にしているようではありません。クライアント(ブラウザ)内の「セッション」クッキーの値を変更するだけです。バックエンドでは、このセッションはまだ生きています。

これは次のようになりますことを証明するための実験:(CookieManagerのような単純なブラウザプラグインは、この演習を実行するために使用することができます)

  1. ログインアプリ
  2. に「セッション」のノートを取りますクッキーの値が成功した後のログイン
  3. 今すぐログアウト
  4. 「セッション」クッキーの値を再び観察します。あなたは に変更されていることに気付くでしょう。
  5. この値を上記の手順1で前述の 'session'cookieの値 と置き換えてください。
  6. もう一度内部認証済みページにアクセスしてみてください。

結果:あなたは成功しlogout_user()は実際にセッションを無効化していないが、単にクライアントに「セッションのクッキーを変更しないことを証明する、で再ログインせずに内部ページを表示することができるだろう。

しかし、私はまだflask-login logout_user() definitionを見て、それを理解しようとしています。

+0

ありがとうございました! https://github.com/maxcountryman/flask-login/blob/master/docs/index.rst#alternative-tokensで「フラスコログイン」を使ってセッション管理を適用するための素敵なドキュメントを見つけました。基本的に私は、 'id'ベースのトークンを、ユーザのログインとログアウト時に作成され破壊される' session'ベースのトークンに置き換えました。 – Gil

関連する問題