素晴らしいコミュニティモジュール

フィブセッション

fibjs 用のセッションミドルウェア

インストール

1
npm install fib-session [--save]

テスト

1
npm run ci
1 2 3 4 5 6 7 8 9 10 11 12 13
var Session = require('fib-session') var session = new Session(conn, opts); var srv = new http.Server(8000, [ session.cookie_filter, // use session ID via cookie { // routers '^/foo$': (r) => { var v = r.session.v; }, ... } ]);

APIセッションミドルウェアの作成

1 2 3 4 5 6 7 8 9 10 11 12 13
var Session = require('fib-session') var session = new Session(conn, opts); var srv = new http.Server(8000, [ session.api_filter, // use api session filter { // routers '^/foo$': (r) => { var v = r.session.v; }, '^/get-token$': session.api_token } ]);

kv オプションと session オプションは両方とも同じオブジェクト内にあります。

kv-store オプション

オプション デフォルト オブジェクト/マップ Lruキャッシュ レベルDB レディス モンゴDB SQLite/MySQL
テーブル名 「kvs」 バツ バツ バツ √ √ √
キー名 「き」 バツ バツ バツ バツ √ √
値の名前 「v」 バツ バツ バツ バツ √ √
キーのサイズ 32 バツ バツ バツ バツ バツ √
値のサイズ 256 バツ バツ バツ バツ バツ √
クリーンアップ間隔(ミリ秒) 60000 バツ バツ バツ バツ バツ √
タイムアウト(ミリ秒) 0 バツ √ バツ √ √ √
接頭辞 「」 √ √ √ √ √ √
キャッシュ 間違い √ √ √ √ √ √
キャッシュサイズ 65536 √ √ √ √ √ √
キャッシュタイムアウト(ミリ秒) 60000 √ √ √ √ √ √

セッションオプション

オプション デフォルト
セッションキャッシュサイズ 65536 キャッシュ内のセッションの最大数
セッションキャッシュタイムアウト(ミリ秒) 900000 一定期間操作されなかったセッション オブジェクトをバッファからクリアします (デフォルトは 15 分)
セッションキャッシュ遅延 100 永続ストレージへの書き込みセッションの遅延時間
セッションID名 "セッションID"
  • セッション キャッシュは、http 要求間でセッションの一貫性を維持するために使用されます。
  • セッションキャッシュのタイムアウトは遅延より大きくなければなりません

  • クライアント側はセッションIDのみを持ち、セッションはサーバー側で操作されます。

メソッド

session.setup()

バックエンドデータベースをセットアップします。

v = session.cookie_filter

Cookie ベースのセッション フィルターを返します。

session.api_filter

ヘッダーベースのセッションフィルターを返します。

session.api_token

新しいセッション ID を取得する API ハンドラーを返します。

JSONウェブトークン(JWT)

オプション

オプション デフォルト
session_jwt_algo ヌル fib-jws の jws.ALGORITHMS を参照してください。
session_jwt_key ヌル 署名キー。fib-jws を参照
  • fib-jws を参照https://github.com/fibjs/fib-jws
  • session_jwt_algo と session_jwt_key を設定して JWT を有効にします
    1 2 3
    // session_jwt_algo is encryption algorithms in fib-jws // session_jwt_key is to verify the signature. var session = new Session(conn, { session_jwt_algo: 'HS256', session_jwt_key: verify_key })

    メソッド

    session.setTokenCookie

  • CookieにJSON Webトークンを設定します
  • 署名用のsign_keyは、アルゴリズムによってはsession_jwt_keyとは異なる場合があります。
  • JSON Web トークンの仕様によると、1 つのユーザー セッションは、ユーザー セッション情報を設定するために setTokenCookie を 1 回だけ呼び出すことができます。2 回目では例外がスローされます: new Error('JSON Web Token を変更できません')
  • デフォルト値 r.session={}
    1 2 3
    // sign user info: { id: 12345, name: "Frank" }, and set the cookie // r is request session.setTokenCookie(r, { id: 12345, name: "Frank" }, sign_key)

    session.getToken

  • API フィルター モードのトークンを取得します。session.api_filter を参照してください。
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)