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 si trovano 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
dimensione_chiave 32 X X X X X
valore_dimensione 256 X X X X X
cleanup_interval(ms) 60000 X X X X X
tempo scaduto (ms) 0 X X
prefisso ""
cache falso
dimensione della cache 65536
timeout_cache(ms) 60000

opzioni di sessione

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

  • Il lato client ha solo l'ID di sessione, mentre la sessione è gestita dal lato server.

Metodi

session.setup()

configurare il database di back-end.

v = session.cookie_filter

restituisce un filtro di sessione basato sui cookie.

session.api_filter

restituisce un filtro di sessione basato su intestazione.

session.api_token

restituisce un gestore API che ottiene un nuovo ID di sessione.

Token Web JSON (JWT)

opzioni

opzioni predefinito
session_jwt_algo nullo vedi jws.ALGORITHMS in fib-jws
session_jwt_key nullo segno chiave vedi in fib-jws
  • vedi fib-jws https://github.com/fibjs/fib-jws
  • imposta 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

  • impostare il JSON Web Token nel cookie
  • sign_key per la firma, può essere diverso da session_jwt_key, a seconda dell'algoritmo.
  • In base alle specifiche JSON Web Token, 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

  • ottieni il token per la modalità filtro API, vedi session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)