session fib
Middleware de session pour fibjs
Installer
1npm install fib-session [--save]
Test
1npm run ci
Création d'un middleware de session basé sur les cookies
1
2
3
4
5
6
7
8
9
10
11
12
13var 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
13var 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 JWT1 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_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)