sessione di fib
Middleware di sessione per fibj
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 si trovano nello stesso oggetto.
opzioni kv-store
opzioni | predefinito | oggetto/mappa | LruCache | LivelloDB | Redis | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
nome_tabella | "kvs" | 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 della sessione
opzioni | predefinito | |
---|---|---|
session_cache_size | 65536 | numero massimo di sessioni nella cache |
session_cache_timeout(ms) | 900000 | cancella gli oggetti della sessione che non vengono utilizzati per un periodo di tempo dal buffer, valore predefinito 15 minuti |
session_cache_delay | 100 | ritardo temporale per la sessione di scrittura nell'archivio persistente |
nome_id_sessione | "IDsessione" |
- la cache di sessione viene utilizzata per mantenere la coerenza della sessione tra i requisiti http.
il timeout della cache della sessione deve essere maggiore del relativo ritardo
Sul lato client è presente solo l'ID di sessione, la sessione viene gestita sul lato server.
Metodi
session.setup()
impostare 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 | |
---|---|---|
session_jwt_algo | nullo | vedere jws.ALGORITMI in fib-jws |
session_jwt_key | nullo | chiave del segno vedi in fib-jws |
- vedere 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
- impostare il token Web JSON nel cookie
- sign_key per la firma, potrebbe essere diverso da session_jwt_key, a seconda dell'algoritmo.
- in base alle specifiche 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('Can't modification the JSON Web Token')
- 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)