Fib-sessione
Middleware di sessione per fibjs
Installare
1npm install fib-session [--save]
Test
1npm run ci
Creazione di un middleware di sessione basato su cookie
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;
},
...
}
]);
Creazione di un middleware di sessione 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
}
]);
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 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 })
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_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)