Module communautaire génial

fib-session

Middleware de session pour fibjs

Installer

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

Création d'un middleware de session 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 } ]);

Les options kv et les options de session se trouvent dans le même objet.

options de magasin kv

options défaut objet/carte LruCache NiveauDB Redis MongoDB SQLite/MySQL
nom de la table "kv" X X X
nom_clé "k" X X X X
nom_valeur "v" X X X X
taille_clé 32 X X X X X
Taille de la valeur 256 X X X X X
cleanup_interval(ms) 60000 X X X X X
délai d'attente (ms) 0 X X
préfixe ""
cache faux
taille du cache 65536
cache_timeout(ms) 60000

options de session

options défaut
session_cache_size 65536 nombre max de session en cache
session_cache_timeout(ms) 900000 effacer les objets de session qui ne sont pas exploités pendant une période de temps à partir du tampon, par défaut 15 minutes
session_cache_delay 100 délai pour la session d'écriture sur le stockage persistant
nom_id_session "ID de session"
  • le cache de session est utilisé pour maintenir la cohérence de session parmi les exigences http.
  • le délai d'expiration du cache de session doit être supérieur à son délai

  • Le côté client n'a que l'ID de session. La session est exploitée du côté serveur.

Méthodes

session.setup()

configurer la base de données principale.

v = session.cookie_filter

renvoie un filtre de session basé sur les cookies.

session.api_filter

renvoie un filtre de session basé sur l'en-tête.

session.api_token

renvoie un gestionnaire d'API qui obtient un nouvel ID de session.

Jeton Web JSON (JWT)

options

options défaut
session_jwt_algo nul voir jws.ALGORITHMES dans fib-jws
session_jwt_key nul clé de signe. voir dans fib-jws
  • voir fib-jws https://github.com/fibjs/fib-jws
  • définissez session_jwt_algo et session_jwt_key pour activer 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 })

    Méthodes

    session.setTokenCookie

  • définir le jeton Web JSON dans le cookie
  • sign_key pour la signature, peut être différent de session_jwt_key, selon l'algorithme.
  • Selon la spécification JSON Web Token, une session utilisateur ne peut être appelée qu'une seule fois setTokenCookie pour définir les informations de session utilisateur. La seconde lèvera une exception : new Error('Impossible de modifier le JSON Web Token')
  • valeur par défaut 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

  • obtenir un jeton pour le mode de filtrage api, voir session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)