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

fib-セッション

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-ストアオプション

オプション ディフォルト オブジェクト/マップ LruCache LevelDB Redis MongoDB SQLite / MySQL
table_name 「kvs」 NS NS NS
key_name 「k」 NS NS NS NS
value_name 「v」 NS NS NS NS
key_size 32 NS NS NS NS NS
value_size 256 NS NS NS NS NS
cleanup_interval(ms) 60000 NS NS NS NS NS
タイムアウト(ミリ秒) 0 NS NS
プレフィックス 「」
キャッシュ NS
cache_size 65536
cache_timeout(ms) 60000

セッションオプション

オプション ディフォルト
session_cache_size 65536 キャッシュ内のセッションの最大数
session_cache_timeout(ms) 900000 バッファから一定期間操作されないセッションオブジェクトをクリアします。デフォルトは15分です。
session_cache_delay 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-jwshttps //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

  • JSONWebトークンをCookieに設定します
  • 署名のsign_keyは、アルゴリズムによってはsession_jwt_keyとは異なる場合があります。
  • JSON Web Tokenの仕様によると、1つのユーザーセッションは、ユーザーセッション情報を設定するために一度だけsetTokenCookieを呼び出すことができます。2番目は例外をスローします:new Error( 'Ca n't modify the 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)