クッキーとセッション内のノード

1、クッキー

HTTPはステートレスなプロトコルです。例:ドメイン名のホームページを開き、訪問者を特定することはできません、ドメイン・ネーム・サーバの他のページを開きます。その同じブラウザで同じWebサイトにアクセスするには、各訪問は何の関係もありません。

クッキー原理は次のとおりです。クライアントのブラウザサーバーへの最初のアクセスの後、サーバーは、クライアントのブラウザが、再びこのクッキー情報を運ぶたびに、同じドメインにアクセスする際に、いくつかのJSONデータは、その後、特定され返されます。

機能

  • クッキーは、ユーザーが見て自由に、暗号化されていません。
  • ユーザーがクッキーを削除する、またはそれを無効にすることができ、有効期限を設定されていない、あなたが閉じた後に、デフォルトでは、ブラウザが失敗します
  • クッキーは、改ざんすることができます
  • クッキーは、攻撃するために使用することができます
  • クッキーの店は非常に小さいです。(4K未満)

クッキーは、非クロスドメインな性質を持っていますGoogleのクッキーGoogleにアクセスするための唯一のブラウザを運ぶクッキーの仕様を、よると、Baiduはクッキーを運ぶことはありません。グーグルは、Googleのクッキーを操作することができ、およびBaiduのクッキーを操作することはできません。

でのNode.jsを使ってクッキー:

必要cookieParser =定数1( 'パーサークッキー');      // モジュールパーサ-クッキー 
 2アプリ= CONST エクスプレス();
  3 app.use(cookieParser());                // 中間部品 
 4 app.get( '/'、 (REQ、RES)=> {
  5 res.send( 'ルートルート' );
  6 })
  7 app.get( '/ログイン'、(REQ、RES)=> {
  8。      // クライアントのクッキーを取得 
 9。     コンソール。 (req.cookies)をログ;
 10 
11。      // サーバクッキーによって送達 
res.cookie 12である( '天国'、 '666' 、{
 13 MAXAGEさ:900000                 // 有効時間は、ミリ秒 
14      });
15 res.send( 'OK' );
16 })
 17 
18 app.listen(3000)。

2、セッション

サーバーは、最初のセッションを作成し、クッキーの追跡セッションに依存して、利用者の状態を記録する必要がある場合、サーバーは、HTTPプロトコルでクライアントを教えてくれます、あなたはそれぞれの時間が経過した後、クライアントの要求は、このセッションIDを運ぶために、内部のクッキーにセッションIDを記録する必要があり、サーバーは、クライアントを識別することができるようになります。

機能

  • セッションは、技術から生まれたのではなく、クッキーに依存していません。ログイン効果が消えたときに、ブラウザのクッキーが無効になっている場合、またはユーザーがクッキーをクリアし、ログが消えました。
  • セッションクッキーは、それがどこにあるかよりも違うのですか?発行したセッションが文字化けして、キャッシュサーバ自体に何か;アップ文字化けして次のブラウザは、キャッシュを持つこの時間は誰が見て比較しますか?
Node.jsの中のセッション
/ * 
     セッションデータをサーバに格納されているが、ブラウザに格納されたインデックスは、ブラウザベースのcookieidは、対応するセッションを識別する
     セッションモジュールが使用NPM-ExpressのI -Sセッション
 * / 
constのエクスプレス =必要とする(「エクスプレス」); 
CONSTセッション = (「エクスプレス・セッション」)を必要とします。      // 解析するモジュールセッションのセッション・エクスプレス 
のconst =のApp エクスプレス(); 

// セッションミドルウェア式の開始 
app.use(セッションを({            //は、クライアント暗号化されたセットが必要ですクッキー 
    の秘密: '天国'、         // 任意の文字列、クッキー暗号化された 
    クッキー:{MAXAGE:300000 }、
    再保存:trueに
    saveUninitialized:trueに
}))
//ミドルウェアは、これインターセプタの前に、時系列順に行われる 
app.get( 'favicon.icoを/'(REQ、RES)=> {
     リターン; 
})

app.get( '/'、(REQ、RES) => { 
    res.send( + 'あなたはフットプリントされている' req.session.lvyou); 
})
app.get( '/:都市'、(REQ、RES)=> { 
    ましょう市 = req.params.city。
     // にconsole.log(req.session); 
    LET cityArr req.session.lvyou || = []; 
    cityArr.push(市); 
    req.session.lvyou = cityArr; 
    res.send( "あなたは今日行きます。" + 都市); 
})

app.listen( 3000)。
/ * 
       データベースにメモリから抽出されたセッションMongoの
       モジュールNPM iが接続-Mongoの-S Mongoのセッションデータベースに
* / 
constのエクスプレス =(「エクスプレス」を必要とする)、
    アプリ = エクスプレス()、
    セッション = "(必要セッション・エクスプレス" )、
    Mongosessionが接続-Mongoの"を(必要= " )セッション()、
    マングースはマングース(必要=" " );
 // データベースに接続 
mongoose.connect("のMongoDB:// localhostの/恵み」、{useNewUrlParser。 真へ})
 // セッション式
app.use(セッション({ 
    :秘密 "doukeyi"、            // 秘密鍵、暗号化
    ローリング:trueに// 各対話(ページ操作、タグ、アヤックス)が、時間をリセット 
    クッキー:{MAXAGE:1000 * 60 * 60}、// 1時間のための有効なクッキー 
    :再保存をfalseに// 各要求の再あればセーブデータは 
    saveUninitialized:falseに// 初期値設定のデフォルトあれば 
    ストア:新しい新しいMongosession({ 
        URL::「MongoDBのは// localhost /をバウンティ」         // データベースに保存されたセッション、データベースは自動的に失効した後にクリアされます
    }) 
))} 
/ * 
    セッションクリア
* / 
router.get( "/ジンバブエログアウト"を、機能(REQ、RES){ 
    ; req.session.destroy()
    (res.redirect"/ログイン" ); 
})

3、違い

  • クッキーは明確であり、セッションが文字化けしています。
  • クライアントのブラウザからクッキー、サーバー・セッションがあります。
  • クッキー小さなメモリ、大規模なセッションメモリ。

おすすめ

転載: www.cnblogs.com/danew/p/11415672.html