2

私は使用express-sessionしており、ルート ミドルウェアがすべて呼び出しているヘルパー関数を持っています。これは実際にreq.sessionオブジェクトのプロパティをチェックし、存在しない場合は 401 を返します。

だから私は今これを持っています:

module.exports.hasAccessToken = function(req, res, next) {
  if(req.session.accessToken){
    next();
  } else {
    res.status(401).send();
  }
};

私はconnect-mongo自分のストアとして使用しており、ログイン時にOAuth プロバイダーから返された値を使用するaccessTokenプロパティを追加しています。req.session

コンソールからログアウトするreq.sessionと、ログイン後の状態が表示されます

Session {
  cookie:
   { path: '/',
     _expires: Tue Apr 05 2016 08:58:10 GMT+0100 (GMT Daylight Time),
     originalMaxAge: 3000,
     httpOnly: true },
  accessToken: '<token_value_here>' }

セッションが期限切れになり、401 がさらに上の関数によって送信されている場合、

Session {
  cookie:
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true } }

req.sessionログインしていないユーザーがアプリケーションにアクセスした場合も、上記のように評価されます。そのため、ユーザーが以前にログインしていて、セッション Cookie の有効期限が切れているかどうかを確認する方法を見つけようとしています。どうにかしてブラウザの Cookie コレクションを利用できないかと思っていたのですがexpress-session、httpOnly が使用されているため、生成された Cookie コレクションにアクセスできません。

したがって、最終的にやりたいことはres.status(401).send();、「SESSION_EXPIRED」など、401 が送信された理由を示す何らかの理由コードを含む追加情報を応答本文に追加することですが、最初に知る方法を理解する必要があります。ユーザーが以前に有効期限が切れたセッションを持っていたかどうか。

これは理にかなっており、達成可能ですか?

ありがとう

4

0 に答える 0