2016-12-29 10 views
0

私は、外部ドメインをスクラップしてAPIを構築するアプリケーションを作成しています。ドメインをスクレイプするためには、私のサーバは(セッションクッキーで)許可されていなければなりません。いつノードでクッキーが期限切れになるかを決定するリクエストモジュール

私はrequest moduleをクッキージャーと一緒に使用して、リクエスト間でクッキーを維持しています。

ノードルータのミドルウェアを設定して、セッションの期限が切れると、認証方法を再実行できるようにします。私はcookieJar.getCookies()の内容をログアウトすると

export function validate(req, res, next) { 
    const cookie = cookieJar.getCookie('**target domain**'); 
    const COOKIE_IS_EXPIRED = // ??? 
    if (COOKIE_IS_EXPIRED) { 
     authenticate().then(next); 
    } else { 
     next(); 
    } 
} 

私の結果は、以下のようなものです::このような何かを考えて、両方のクッキーの有効期限が切れている/に近いことをするとき

[ Cookie="lw_opac_1=1483019929431275955; Expires=Wed, 29 Mar 2017 13:58:49 GMT; Max-Age=7776000; Path=/opac; hostOnly=true; aAge=0ms; cAge=6345ms", 
    Cookie="lw_opac=ta4tscsejs6c94ngikt7hlbcn0; Path=/; hostOnly=true; aAge=0ms; cAge=6347ms" ] 

は、どのように私は検証することができ、私の認証機能を再実行しますか?

ありがとうございます!

+0

[私の投稿](https://stackoverflow.com/questions/41380997/determine-when-cookie-will-expire-with-node-request-module/41381820#41381820)あなたの質問に答えてください? – rsp

答えて

0

npmのcookieモジュールを使用して、Cookieを解析できます。

したがって、たとえば、あなたは、あなたのような文字列が投稿しているとき:

var c = "lw_opac_1=1483019929431275955; Expires=Wed, 29 Mar 2017 13:58:49 GMT; Max-Age=7776000; Path=/opac; hostOnly=true; aAge=0ms; cAge=6345ms"; 

その後、実行している:

{ lw_opac_1: '1483019929431275955', 
    Expires: 'Wed, 29 Mar 2017 13:58:49 GMT', 
    'Max-Age': '7776000', 
    Path: '/opac', 
    hostOnly: 'true', 
    aAge: '0ms', 
    cAge: '6345ms' } 

あなたが使用することができます。

console.log(cookie.parse(c)); 

は印刷になりますMax-AgeExpiresのフィールドを使用し、momentを使用してそれらを解析します。それらを現在の時刻と比較する。

momentを使用すると、指定した日付と今日を比較し、差異の時間数または日数を取得できます。たとえば、この:その日付が既に経過している場合

moment().isAfter(someDate); 

はあなたを教えてくれます(それは有効期限があります場合は、クッキーの有効期限が切れている場合、それはあなたを教えてくれます)。

参照:

+0

ありがとう!これは私の質問にはあまり答えることができませんでしたが、私がそれを理解できるようになったところです。乾杯! :-) – Prefix

0

が正解@rsp。しかし、アクセスセキュリティトークンを維持する場合は、自動的にクライアント側のCookieを維持し、新しいセッションのトークンを生成するcsrfトークンに移動する必要があります。詳細についてhttp://www.senchalabs.org/connect/csrf.html

+0

チップをありがとう。幸いにも、これは本当にセキュリティ関連のアカウントではありません - 私はちょうどサーバーとのセッションを維持する必要があり、資格情報ではありません。 – Prefix

関連する問題