Open3
cookieの流れをおさらい
ログインボタンを押下
- ログインボタンを押下。formDataを取得。その内容をJOSEのSignJWTを使用してencrypt(暗号化)
- 帰ってきたトークンをcookies.set('session', 暗号化トークン )関数でクッキーに保存。
- cookies.get('session').valueで内容を取得して、JOSEのjwtVerifyでdecrypt(複合化)して、ブラウザに表示できる。
ログアウトボタンを押下
- cookies.set('session' , ' ')で強制的に破棄。
ページが読み込まれるたびmiddleware.ts内の関数が呼ばれる。
- cookies.get('session')で取得し、無ければページをそのまま返す。
- あればそれをdecrype(複合化)して、新たに有効期限を設定する。
cookies()関数
- next/headersからimportされる関数。
- 引数には
cookies( key, value, options)
を指定する。
optionsの種類
-
path
(文字列): クッキーが有効なパスを指定します。デフォルトは ' / ' となる -
expires
(日付オブジェクト): クッキーの有効期限を指定します。この日付を過ぎるとクライアント側でクッキーが削除されます。 -
maxAge
(数値): クッキーの有効期限を秒単位で指定します。expiresよりも優先されます。 -
domain
(文字列): クッキーの有効なドメインを指定します。 -
secure
(真偽値): クッキーの送信をセキュアにするかどうかを指定します(https通信でのみ送信されます)。 -
httpOnly
(真偽値): クライアント側のJavaScriptからクッキーにアクセスできるかどうかを指定します。trueに設定すると、JavaScriptからはアクセスできません。 -
sameSite
(文字列): クロスサイトリクエストによるCSRF攻撃を防ぐためのSameSite属性を指定します。"Strict"、"Lax"、"None"のいずれかを指定します。
State less Session
- ユーザーのセッション情報を、ブラウザ側にのみ保存することをステートレスセッションという。
- これによりサーバーのストレージを消費しなくて済む。