blog

クッキー・パーサーとエクスプレス・セッション・ミドルウェアを使う

cookie-parserはExpressのミドルウェアで、クッキーの解析を実装するために使用されます。クッキーの値でクライアントの操作を容易にするために。クッキーに格納されている情報のサーバ側に相当...

Jul 1, 2020 · 3 min. read
シェア

cookie-paeserミドルウェアの紹介

cookie-parser は Express のクッキー解析用ミドルウェアです。クッキーの値でクライアントの操作を容易にするためです。クッキーに格納されている情報のサーバ側に相当し、その後、クライアントは値を取得するためにクッキーを介して取得することができます。例えば、クッキーは一般的にユーザーのログイン情報を記録するために使用されます。

express-sessionミドルウェアの紹介

上記のクライアントは、クッキーの値を取得することができ、その後、サーバーは、セッションを介していると述べた。セッションは、ユーザーの状態情報技術を記録するサーバーは、クライアントが最初にサーバーを要求するとき、サーバーは、セッションオブジェクトと呼ばれるクライアントのための一意のオブジェクトを作成します。つまり、セッションのクッキーを保存するプロセスです。

Expressでクッキー・パーサーを使う方法

クッキー・パーサーをインストール

// 
npm i cookie-parser --save

アプリ内.js

//app.jsドキュメント、ミドルウェアの紹介
var cookieParser = require('cookie-parser')
//ミドルウェアを設定する
app.use(cookieParser());

クッキーを設定する方法

設定を行うのはresであることに注意してください。

//クッキーを設定する
res.cookies('key','value',option);

name=value:キーと値のペアで、保存するキーと値を設定します。

expires: 有効期限、クッキーは一定時間後に失効します、例えば expires=Wednesday,09-Nov-99 23:12:40 GMT

maxAge: 最大有効期限、何時間後に失効するかを設定します。

secure: secure が true の場合、クッキーは HTTP では無効で HTTPS では有効です。

path: クッキーが影響するルートを示します。pathが一致しない場合、ブラウザはクッキーを送信しません。

httpOnly: は COOKIE の Microsoft 拡張です。COOKIEに "httpOnly "属性が設定されている場合、アプリケーションはCOOKIEの情報を読み込まず、XSS攻撃を防ぎます。

signed: クッキーが署名されているかどうかを示します。true に設定するとクッキーが署名されるので、res.signedCookies を使ってアクセスする必要があります。もしクッキーが署名されていなければ、res.cookies によってアクセスされます。

クッキーを削除する方法

//クッキーを削除する
res.cookie('username', 'tanakasan', { maxAge:0 });

クッキーを暗号化する方法

ミドルウェアの設定時にパラメータを渡します。

app.use(cookieParser('123456'));

set属性に="signed:true "属性を追加します。

res.cookie('username',name, {maxAge:1000 * 60 * 60 * 24 * 7,signed:true});		//クッキーの保存期間を設定する。

クッキーを取得する方法

暗号化されていないクッキーを取得するための設定を行うのはreqであることに注意してください。

req.cookies.XXXX
req.cookies.username

暗号化されたクッキーを取得

req.signedCookies.XXXX
req.signedCookies.username

Expressでのexpress-sessionの使い方。

express-sessionのインストール

// 
npm i express-session --save

アプリでセッションを作成する方法.jsexpress-sessionの設定

導入後に設定を行います:

let session = require("express-session");		
app.use(session({
	secret: '123456',
 resave: false,
 saveUninitialized: true
}));

セッションのパラメータは以下の通りです: name: セッションが保存されるクッキーのフィールド名を設定します。store:セッションの保存方法。デフォルトはメモリ内ですが、redisやmongodbなどを使うこともできます。secret: 署名されたCookieを改ざんできないようにするために、ハッシュ値を計算してCookieに入れるための秘密の文字列を設定します。cookie:セッションIDを保持するクッキーのオプションを設定します。genid:新しいセッションIDを生成するときに使用する関数です。resave: セッションが変更されていなくてもセッションの値を保存します。

セッションのシード方法

req.session.XXX=VALUE
// 
req.session.auth_username=name

セッションの取得方法

req.session.XXX
req.session.auth_username

破壊セッションの削除方法

req.session.XXX=undefined;
req.session.auth_password=undefined;

これら2つのミドルウェアをExpressフレームワークで使用した結果、ブラウザの結果は以下のようになりました:

Read next

htmlページ内の<Script>タグの配置について

前置き:一般的にスクリプトタグはheadかtailに配置されます。headは<head></head>の中、tailは通常<body></body>の中ですが、</body>閉じタグの後に置くこともできます。 スクリプトを<head>の中に置くことで、ブラウザはHTMLを解析し、スクリプトタグを見つけると、それらのスクリプトを最初にダウンロードします。

Jul 1, 2020 · 3 min read