@pmc12thsuki/session-manager

## Setup `yarn add @bonio-tw/session-manager`

Usage no npm install needed!

<script type="module">
  import pmc12thsukiSessionManager from 'https://cdn.skypack.dev/@pmc12thsuki/session-manager';
</script>

README

session-manager

Setup

yarn add @bonio-tw/session-manager

How To Use

import { initSessionManager } from '@bonio-tw/session-manager';

// app or web storage
// https://developer.mozilla.org/zh-TW/docs/Web/API/Storage
const customStorage = {}; 

const sessionManager = initSessionManager({
    storage: customStorage,
});

initSessionManager 參數

  • storage:
    • required
    • 可帶 app 或 web 的 storage
    • 必須實現 getItemsetItemremoveItem 接口
  • sessionIdTTL:
    • optional
    • sessionId 過期的時間。
    • 以秒為單位,default 值為 1800 秒(30分鐘)
    • 使用 0 代表 sessionId 不會因為閒置而過期
  • generateSessionId:
    • optional
    • 產生 sessionId 的方法
    • default 使用 uuidv4
  • generateClientId:
    • optional
    • 產生 clientId 的方法
    • default 使用 uuidv4
const sessionManager = initSessionManager({
    storage: customStorage,
    sessionIdTTL: 30 // 30s
    generateSessionId: () => `mySessionId`,
    generateClientId: () => `myClientId`
});

SessionManager API

  • getSession:返回當前的 sessionIdclientId

    • 過午夜、超過 sessionIdTTL 時,會 renew sessionId
    • 可帶參數 sessionIdTTL,複寫當次 getSession 時要使用的 ttl 時間。使用 0 代表 sessionId 不會因為閒置而過期。
  • clearSession:清空當前 storage 中紀錄的 session 資訊

const session = await sessionManager.getSession({sessionIdTTL: 0});
// 不檢查是否已經超過 sessionId 的閒置時間
console.log(session)
// { sessionId: 'mySessionId', clientId: 'myClientId' }
await sessionManager.clearSession();