2017-12-14 17 views
1

クライアントから、すべてのセッションを認証する必要があるという要件があります。Flask&Flask-LoginでのセッションCookieの削除

Chrome、Firefox、Safari以外ではセッションCookieを使用する必要があります(will persist)。ユーザーがブラウザオプションで「起動時に最後のタブを開く」を選択した場合、これらのセッションCookie 。

私たちのクライアントはこれを気に入らず、30分(サイトは長時間使用することを目的としたものではありません)のようにクッキーを本当にすばやく期限切れにすることをお勧めします。

は私が設定フラスコ-ログイン経由クッキー「を覚えている」ことができるんだけど、問題は私が行う場合でも、フラスコ-ログインはまだ永久的なクッキーの有効期限が切れた後でもあることを意味し、セッションクッキーを設定されていることですセッション1は保持され、ユーザーはであり、まだが認証されています。

最初にセッションCookieを完全に無効にするにはどうすればよいですか?

+1

あなたはこれを試してみました? https://flask-login.readthedocs.io/en/latest/#fresh-logins –

+0

'セッションが破棄され、「私を覚えてください」というクッキーを使ってログインし直したとき... - これは、私たちが直面していた厳密な問題(セッションは特定のブラウザでは破壊されない)であり、最初にセッションを使用しないことで解決しようとしています... – kevlarr

+1

@OluwafemiSule @OluwafemiSule "...不十分"あまりにも主観的だった;) – kevlarr

答えて

1

あなたが指摘したように、クライアント側ではCookieの動作を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 
関連する問題