fib-セッション
fibjs用のセッションミドルウェア
インストール
1npm install fib-session [--save]
テスト
1npm run ci
Cookieベースのセッションミドルウェアの作成
1
2
3
4
5
6
7
8
9
10
11
12
13var 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
13var 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を参照してください。1session.getToken ({ id: 12345, name: "Frank" }, sign_key)