Fantastico modulo community community

Fib-sessione

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

Sia le opzioni kv che le opzioni di sessione sono nello stesso oggetto.

opzioni kv-store

opzioni predefinito oggetto/Mappa LruCache Livello DB Redis MongoDB SQLite/MySQL
nome_tabella "kv" 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
valore_dimensione 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 in 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 su memoria persistente
nome_id_sessione "ID sessione"
  • la cache di sessione viene utilizzata per mantenere la coerenza della sessione tra le richieste http.
  • il timeout della cache della sessione deve essere maggiore del suo ritardo

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

metodi

session.setup()

configurare il database di backend.

v = session.cookie_filter

restituisce un filtro di sessione basato su cookie.

session.api_filter

restituisce un filtro di sessione basato sull'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 chiave del segno. 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

  • imposta il token Web JSON nel cookie
  • sign_key per la firma, può essere diverso da session_jwt_key, a seconda dell'algoritmo.
  • Secondo la specifica 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('Non è possibile 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

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