TypeDoc
Middleware Session

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

NameType
cContext
worldIdnumber

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

NameType
cContext
worldIdnumber
userIdnumber

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>

Defined in

src/middleware/session.ts:285 (opens in a new tab)