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

fib-session

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 オプションと sesion オプションの両方が同じオブジェクトにあります。

kv-store オプション

オプション デフォルト オブジェクト/マップ ルールキャッシュ レベルDB レディス MongoDB SQLite/MySQL
テーブル名 「kvs」 バツ バツ バツ
key_name 「く」 バツ バツ バツ バツ
値名 「v」 バツ バツ バツ バツ
key_size 32 バツ バツ バツ バツ バツ
値_サイズ 256 バツ バツ バツ バツ バツ
cleanup_interval(ms) 60000 バツ バツ バツ バツ バツ
タイムアウト(ミリ秒) 0 バツ バツ
プレフィックス 「」
キャッシュ
キャッシュサイズ 65536
cache_timeout(ミリ秒) 60000

セッションオプション

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

  • クライアント側はセッションIDのみで、セッションはサーバー側で動作します。

メソッド

session.setup()

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

v = session.cookie_filter

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

session.api_filter

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

session.api_token

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

JSON Web Token(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

  • JSON Web Token を cookie に設定する
  • 署名用の sign_key は、アルゴリズムによっては session_jwt_key とは異なる場合があります。
  • JSON Web トークンの仕様によると、1 つのユーザー セッションは、ユーザー セッション情報を設定するために setTokenCookie を 1 回だけ呼び出すことができます。2 番目のセッションでは、例外がスローされます: new Error('JSON Web トークンを変更できません')
  • デフォルト値 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)