Module communautaire génial

fib-session

Middleware de session pour fibjs

Installer

1
npm install fib-session [--save]

Tester

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 sesion sont dans le même objet.

options kv-store

les options défaut objet / Carte LruCache LevelDB Redis 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
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

les options défaut
session_cache_size 65536 nombre maximum de sessions dans le cache
session_cache_timeout (ms) 900000 effacer les objets de session qui ne sont pas exploités pendant un certain temps à partir du tampon, par défaut 15 minutes
session_cache_delay 100 délai pour l'écriture de la session sur le stockage persistant
session_id_name "ID de session"
  • le cache de session est utilisé pour maintenir la cohérence de la session parmi les http requis.
  • 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 côté serveur.

Les 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)

les options

les options défaut
session_jwt_algo nul voir jws.ALGORITHMS dans fib-jws
session_jwt_key nul signe clé voir dans fib-jws
  • voir fib-jws https://github.com/fibjs/fib-jws
  • définir 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 })

    Les méthodes

    session.setTokenCookie

  • définir le jeton Web JSON dans le cookie
  • sign_key for signature , peut être différent de session_jwt_key, selon l'algorithme.
  • according to JSON Web Token specification , 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: nouvelle erreur ("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

  • get token for api filter mode , voir session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)