Fantastico modulo della community

sessione di fib

Middleware di sessione per fibjs

Installare

1
npm install fib-session [--save]

Test

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; }, ... } ]);

Creazione di un middleware di sessione 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 } ]);

Entrambe le opzioni kv e le opzioni di sessione sono nello stesso oggetto.

Opzioni kv-store

opzioni predefinito oggetto / mappa LruCache LevelDB Redis MongoDB SQLite / MySQL
nome_tabella "kvs" X X X
nome_chiave "K" X X X X
nome_valore "v" X X X X
key_size 32 X X X X X
value_size 256 X X X X X
cleanup_interval (ms) 60000 X X X X X
timeout (ms) 0 X X
prefisso ""
cache falso
dimensione della cache 65536
cache_timeout (ms) 60000

opzioni di sessione

opzioni predefinito
session_cache_size 65536 numero massimo di sessioni nella cache
session_cache_timeout (ms) 900000 cancella gli oggetti di sessione che non vengono utilizzati per un periodo di tempo dal buffer, impostazione predefinita 15 minuti
session_cache_delay 100 ritardo di tempo per la sessione di scrittura nella memoria persistente
session_id_name "sessionID"
  • la cache di sessione viene utilizzata per mantenere la coerenza della sessione tra i requisiti http.
  • il timeout della cache della sessione deve essere maggiore del suo ritardo

  • Il lato client ha solo l'ID di sessione, la sessione viene gestita sul lato server.

Metodi

session.setup()

configurare il database di backend.

v = session.cookie_filter

restituisce un filtro di sessione basato sui cookie.

session.api_filter

restituisce un filtro di sessione basato sull'intestazione.

session.api_token

restituisce un gestore API che ottiene un nuovo ID sessione.

Token Web JSON (JWT)

opzioni

opzioni predefinito
session_jwt_algo nullo vedere jws.ALGORITHMS in fib-jws
session_jwt_key nullo segno chiave. vedere in fib-jws
  • vedere fib-jws https://github.com/fibjs/fib-jws
  • impostare session_jwt_algo e session_jwt_key per abilitare 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 })

    Metodi

    session.setTokenCookie

  • imposta il token Web JSON nel cookie
  • sign_key for signature , potrebbe essere diverso da session_jwt_key, a seconda dell'algoritmo.
  • according to JSON Web Token specification , una sessione utente può essere chiamata setTokenCookie solo una volta per impostare le informazioni sulla sessione utente. La seconda genererà un'eccezione: new Error ("Can't modify the JSON Web Token")
  • valore predefinito 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 , vedere session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)