express-sessionのざっくり翻訳2
express-sessionのざっくり翻訳1
express-sessionのざっくり翻訳2
node.jsでexpressを使いつつ色々実装しようと思っていて、express-passportで認証をしようとしていましたが、express-sessionが登場してしまったので、先にexpress-sessionについて公式をざっくりと斜め読みしました。
そのときのざっくり翻訳です。正確さは低めです。また、別のサイト等で自分で調べたことやコメントは(⇒ )としています。
参考:公式(2017/1/26)
2. API ☆途中から
req.session
sessionデータの保管、アクセスのために、単純に req.session を使うことができます。
保存環境により、JSON形式でserializeされています。以下が例で、ユーザのアクセスカウンタです。:
//公式より丸コピ
// Use the session middleware app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) // Access the session as req.session app.get('/', function(req, res, next) { var sess = req.session if (sess.views) { sess.views++ res.setHeader('Content-Type', 'text/html') res.write('<p>views: ' + sess.views + '</p>') res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>') res.end() } else { sess.views = 1 res.end('welcome to the session demo. refresh!') } })
- Session.regenerate(callback)
- メソッドを呼び出し、セッションを再生成します。完了すると、新しい SIDとSessionがreq.sessionで初期化され、callbackが実行されます。(例省略)
- Session.destroy(callback)
- セッションを破棄し、req.sessionを未設定とします。完了後、callbackが実行されます。(例省略)
- Session.reload(callback)
-
セッションを保管場所から再取得し、res.session に再設定します。
完了後、callbackが実行されます。(例省略) - Session.save(callback)
-
メモリ上にある内容でstoreの情報を置き換えることで、storeにsessionを保存します。
このメソッドはsessionのデータが編集された場合、HTTPレスポンスの最後に自動的に呼び出されます。
例えば WebSocketや長く生き続けるリクエストを扱うときに有用です。(例省略) - Session.touch()
- .maxAgeプロパティを更新します。普通は実行する必要はなく、middlewareが勝手にやってくれます。
req.session.cookie
それぞれのsessionはそれぞれ固有のcookie objectを持っています。なので、アクセスしてくる人ごとに session cookieを編集することができます。
例えば、req.session.cookie.expres をfalseに設定して user-agent? の間にだけcookieを残しておくことができます。
- Cokkie.maxAge
- req.session.cookie.maxAgeの代わりに残り時間をミリ秒で返します。また、.expiresに値を再設定するために使用できます。(中略)
req.sessionID
読み込まれた session のIDを取得するために、req.sessionID を参照できます。読み取り専用の値で、sessionが読み込まれるか、生成された際に設定される値です。
3. Session Store Implementation
各 session store は EventEmitter であり、特定のメソッドが実装されている必要があります。
・必須のメソッドは必ずstoreで呼ばれるメソッドです。
・推奨されるメソッドは使用可能であればstoreで呼ばれるメソッドです。
・任意のメソッドは、このモジュールが呼び出すことはありませんが、ユーザに適したstoreを提供するのを助けます。
- store.all(callback)
-
Optional
storeにある全ての session を配列として取得します。
callbackは callback(err, sessions)として呼び出されます。 - store.destroy(sid, callback)
-
Required
session ID(sid)をもとに、storeから sessionを破棄します。callbackは sessionを破棄したあとにcallback(err)として呼びだされます。 - store.clear(callback)
-
Optional
storeから全ての sessionを破棄するために使われます。callbackは、破棄が行われた後に callback(err)として呼び出されます。 - store.get(sid, callback)
-
Required
session ID(sid)をもとに、storeから sessionを取得します。callbackは callback(err, session)として呼び出されます。
引数のsessionは見つかる場合はその sessionが、見つからない場合は nullか undefinedが設定されエラーは起こりません。(中略)
- store.set(sid, session, callback)
-
Required
session ID(sid)とsessionオブジェクトを storeにupsertします。
callbackはstoreにsessionが設定された後 callback(err)として呼び出されます。 - store.touch(sid, session, callback)
-
Recommended
session ID(sid)とsessionオブジェクトに "touch"します。(⇒touchとは?)
callbackはsessionがtouchされた後に callback(err)として呼び出されます。
主にstoreによって、不要な sessionを自動的に破棄したり、sessionが有効であることをstoreに伝えるために使用されます。潜在的にidle timerをリセットしています。
Compatible Session Stores
express-sessionに互換性のあるmodule集
公式を参照