2017-07-30 1 views
0

私は現在、私のdjangoアプリケーションでデフォルトのデータベースバックアップセッションモデルを使用しています。フロントエンドは、REST APIとのインターフェイスをとるSPAであり、セッションがタイムアウトしたときにユーザーがページを失わないように非同期ログインがあります。私は、ログインモードが表示されるように、セッションがブラウザでタイムアウトしたことを検出しようとしています。しかしブラウザでdjangoのDBベースのセッションが期限切れになっているかどうかを確認するには?

  • 彼らはもはやログインしているので、UserはもはやAPIリクエスト の実行を許可されていない場合、彼らはHTTP403を取得していません。
  • UserUsersに属するオブジェクトインスタンスにアクセスしようとすると、 もHTTP403を取得します。

私は2つの403を区別する必要があります。私の即時の本能がsessionidクッキーとnowの有効期限を比較することであったが、:

  1. クッキーは有効期限httpOnly
  2. ですそこで、私の質問

に設定されていません:どのように私が言うことができるが、私のdjangoセッションが期限切れになっている場合、ブラウザで?

+0

することはできHTTP401ユーザーが許可されていないときとHTTP403ユーザは、他のユーザ – viveksyngh

+1

それはあなたが求めているものを正確ではないのですが、私は代わりにあなたがJWTを使用したほうが良いと思うに属しているオブジェクトインスタンスにアクセスしようとするとセッション。これはREST APIに適しており、トークンを定期的に更新することができます。また、Javascriptでトークンをデコードして有効期限を取得できるので、HTTPリクエストを行わずに期限切れになっているかどうかを確認できます。 Django RESTフレームワークを使用している場合は、JWTを使用するのが簡単です。 –

+0

私は、私が尋ねた質問に対する答えであるので、私は401の回答を受け入れるつもりですが、トークンがより良くなることに同意します。ありがとう! – Escher

答えて

0

標準でHTTP401が無許可アクセスに使用されています。ここでHTTP401の詳細を見つけることができます。 https://httpstatuses.com/401

+0

これはOPが尋ねたこととは全く関係がありません。あなたは、正確であるが、答えではない401を送るものとして、最後のステップを提供しました –

関連する問題