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 del negozio kv
opzioni | predefinito | oggetto/mappa | Lru Cache | LivelloDB | Redis | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
nome_tabella | "kv" | X | X | X | √ | √ | √ |
nome_chiave | "K" | X | X | X | X | √ | √ |
nome_valore | "v" | X | X | X | X | √ | √ |
dimensione_chiave | 32 | X | X | X | X | X | √ |
valore_dimensione | 256 | X | X | X | X | X | √ |
intervallo_pulizia(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 | |
---|---|---|
dimensione_cache_sessione | 65536 | numero massimo di sessioni nella cache |
sessione_cache_timeout(ms) | 900000 | cancella gli oggetti della sessione che non vengono utilizzati per un periodo di tempo dal buffer, impostazione predefinita 15 minuti |
session_cache_delay | 100 | ritardo per la sessione di scrittura nella memoria permanente |
nome_id_sessione | "ID sessione" |
- la cache di sessione viene utilizzata per mantenere la coerenza della sessione tra i requisiti http.
il timeout della cache di sessione deve essere maggiore del suo ritardo
Il lato client ha solo l'ID di sessione La sessione viene gestita sul lato server.
Metodi
session.setup()
configurare il database di back-end.
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 | |
---|---|---|
sessione_jwt_algo | nullo | vedere jws.ALGORITMI in fib-jws |
session_jwt_key | nullo | segno chiave.vedi in fib-jws |
- vedere fib-jws https://github.com/fibjs/fib-jws
- impostare 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, potrebbe essere diverso da session_jwt_key, a seconda dell'algoritmo.
- Secondo la specifica del token Web JSON, una sessione utente può essere chiamata setTokenCookie solo una volta per le informazioni sulla sessione utente impostata. La seconda genererà un'eccezione: new Error('Impossibile 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 il token per la modalità filtro API, vedere session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)