Module communautaire génial

session fib

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

choix défaut objet/Carte LruCache NiveauDB Rédis MongoDB SQLite/MySQL
nom de la table "kvs" 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
intervalle_de nettoyage (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 séance

choix défaut
taille_cache_session 65536 nombre maximum de sessions en cache
session_cache_timeout(ms) 900000 effacer les objets de session qui ne sont pas utilisés pendant un certain temps à partir du tampon, 15 minutes par défaut
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 des sessions entre 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 gérée côté serveur.

Méthodes

session.setup()

configurer la base de données backend.

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)

choix

choix défaut
session_jwt_algo nul voir jws.ALGORITHMES dans fib-jws
session_jwt_key nul clé de signature. 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 setTokenCookie qu'une seule fois pour définir les informations de session utilisateur. La seconde lèvera une exception : new Error ("Impossible de modifier le jeton Web JSON")
  • 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 filtre API, voir session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)