Fantastico modulo comunitario

FIB-session

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
table_name "kvs" X X X
key_name "K" X X X X
value_name "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 ""
nascondiglio 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 sessione che non vengono utilizzati per un periodo di tempo dal buffer, impostazione predefinita 15 minuti
session_cache_delay 100 ritardo per la sessione di scrittura nella memoria permanente
session_id_name "SessionID"
  • cache di sessione viene utilizzata per mantenere la coerenza della sessione tra http richiede.
  • il timeout della cache di 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()

imposta il database back-end.

v = session.cookie_filter

restituisce un filtro di sessione basato su cookie.

session.api_filter

restituisce un filtro di sessione basato su intestazione.

session.api_token

restituisce un gestore API che ottiene un nuovo ID sessione.

JSON Web Token (JWT)

opzioni

opzioni predefinito
session_jwt_algo nullo vedi jws.ALGORITHMS in fib-jws
session_jwt_key nullo chiave del segno. vedi in fib-jws
  • vedi 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 in 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 le informazioni sulla sessione utente impostata. La seconda genererà un'eccezione: nuovo errore ("Impossibile modificare il token Web JSON")
  • 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 , vedi session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)