fib-session
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
}
]);
Entrambe le opzioni kv e le opzioni di sessione si trovano nello stesso oggetto.
opzioni kv-store
opzioni | predefinito | oggetto/mappa | LruCache | LevelDB | 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 | √ |
cleanup_interval(ms) | 60000 | X | X | X | X | X | √ |
tempo scaduto (ms) | 0 | X | √ | X | √ | √ | √ |
prefisso | "" | √ | √ | √ | √ | √ | √ |
cache | falso | √ | √ | √ | √ | √ | √ |
dimensione della cache | 65536 | √ | √ | √ | √ | √ | √ |
timeout_cache(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 di sessione che non vengono utilizzati per un periodo di tempo dal buffer, predefinito 15 minuti |
session_cache_delay | 100 | ritardo per la sessione di scrittura nella memoria persistente |
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, mentre la sessione è gestita dal lato server.
Metodi
session.setup()
configurare il database di back-end.
v = session.cookie_filter
restituisce un filtro di sessione basato sui cookie.
session.api_filter
restituisce un filtro di sessione basato su 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 | segno chiave 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
- impostare il JSON Web Token nel cookie
- sign_key per la firma, può 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 modify 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
- ottieni il token per la modalità filtro API, vedi session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)