vcapi-workers / Exports / middleware/session
Module: middleware/session
session middleware
(world, user?) に対するセッションを発行、管理します cookieの session key はワールドIDを含んだ文字列で、value は jwt で署名されます
jwt を用いた理由はセッションIDを署名しておきたかったのと、ついでにexpireの管理もやってくれて嬉しいからです cookie に jwt を書き込んで DB を持たないタイプのセッションにするつもりは(今のところ)ありません
note: PlanetScale の read / write rows をできる限り圧縮する必要が生じた場合には変更するでしょうけれど、 完全JWT式にするとサーバー側で即座に失効させられないため、セキュリティ上の理由から有効期限をより短く設定することが望ましいです セッションの中身に現状機密情報は入れていませんが、ペイロードを暗号化する必要も出てくるでしょう
Table of contents
Functions
Functions
createAnonymousSession
▸ createAnonymousSession(c, worldId): Promise<void>
ユーザーと結びつかない新規のセッションを作る(ログイン前)
Parameters
| Name | Type |
|---|---|
c | Context |
worldId | number |
Returns
Promise<void>
Defined in
src/middleware/session.ts:188 (opens in a new tab)
createOrRefreshSession
▸ createOrRefreshSession(): MiddlewareHandler<Env>
create or refresh session middleware
このミドルウェアは以下の動作をします
- もし worldId がなければステータスコード 422 で終了します
- 有効なセッションが存在すれば更新(有効期限の延長)し、なければ作成します
- Hono のコンテキストにセッションを格納します
Returns
MiddlewareHandler<Env>
Defined in
src/middleware/session.ts:262 (opens in a new tab)
regenerateSessionOnLogin
▸ regenerateSessionOnLogin(c, worldId, userId): Promise<void>
セッションの再生成(ログイン時)
ついでに該当ユーザーの全セッションの無効化
Parameters
| Name | Type |
|---|---|
c | Context |
worldId | number |
userId | number |
Returns
Promise<void>
Defined in
src/middleware/session.ts:168 (opens in a new tab)
session
▸ session(): MiddlewareHandler<Env>
session middleware
このミドルウェアは以下の動作をします
- もし worldId がなければステータスコード 422 で終了します
- cookie からセッションを読み取って検証します
- コンテキストにセッションを格納します。セッションが無い場合はundefinedになります
Returns
MiddlewareHandler<Env>