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

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」バツバツバツ
key_name 「k」バツバツバツバツ
value_name 「v」バツバツバツバツ
key_size 32バツバツバツバツバツ
value_size 256バツバツバツバツバツ
cleanup_interval(ms) 60000バツバツバツバツバツ
タイムアウト(ミリ秒) 0バツバツ
プレフィックス「」
キャッシュfalse
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トークン(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 for signature 、アルゴリズムによってはsession_jwt_keyとは異なる場合があります。
  • according to JSON Web Token specification 、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

  • get token for api filter mode 。session.api_filterを参照してください。
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)