sesión fib
Middleware de sesión para fibjs
Instalar
1npm install fib-session [--save]
Proba
1npm run ci
Creando un middleware de sesión baseado en 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;
},
...
}
]);
Creando un middleware de sesión 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
}
]);
Tanto as opcións kv como as opcións de sesión están no mesmo obxecto.
opcións de kv-store
opcións | por defecto | obxecto/Mapa | LruCache | NivelDB | Redis | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
nome_táboa | "kvs" | x | x | x | √ | √ | √ |
nome_chave | "k" | x | x | x | x | √ | √ |
nome_valor | "v" | x | x | x | x | √ | √ |
tamaño_chave | 32 | x | x | x | x | x | √ |
valor_tamaño | 256 | x | x | x | x | x | √ |
intervalo_limpeza (ms) | 60000 | x | x | x | x | x | √ |
tempo de espera (ms) | 0 | x | √ | x | √ | √ | √ |
prefixo | "" | √ | √ | √ | √ | √ | √ |
caché | falso | √ | √ | √ | √ | √ | √ |
caché_tamaño | 65536 | √ | √ | √ | √ | √ | √ |
caché_timeout (ms) | 60000 | √ | √ | √ | √ | √ | √ |
opcións de sesión
opcións | por defecto | |
---|---|---|
tamaño_sesión_caché | 65536 | número máximo de sesións na caché |
session_cache_timeout (ms) | 900000 | borrar obxectos de sesión que non se operan durante un período de tempo desde o búfer, por defecto 15 minutos |
retardo_sesión_cache | 100 | atraso de tempo para a sesión de escritura no almacenamento persistente |
nome_id_sesión | "ID de sesión" |
- A caché da sesión úsase para manter a coherencia da sesión entre os requisitos de http.
o tempo de espera da caché da sesión debe ser maior que o seu atraso
O lado do cliente só ten o ID de sesión. A sesión úsase no lado do servidor.
Métodos
session.setup()
configurar a base de datos de fondo.
v = session.cookie_filter
devolve un filtro de sesión baseado en cookies.
session.api_filter
devolve un filtro de sesión baseado en cabeceiras.
session.api_token
devolve un controlador de API que obtén un novo ID de sesión.
Token web JSON (JWT)
opcións
opcións | por defecto | |
---|---|---|
session_jwt_algo | nulo | ver jws.ALGORITMOS en fib-jws |
chave_jwt_sesión | nulo | chave de signo. ver en fib-jws |
- ver fib-jws https://github.com/fibjs/fib-jws
- configure session_jwt_algo e session_jwt_key para activar 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étodos
session.setTokenCookie
- configure o token web JSON na cookie
- sign_key para a sinatura, pode ser diferente de session_jwt_key, dependendo do algoritmo.
- segundo a especificación de JSON Web Token, unha sesión de usuario só se pode chamar setTokenCookie unha vez para establecer a información da sesión de usuario. A segunda xerará unha excepción: new Error('Non se pode modificar o JSON Web Token')
- valor predeterminado 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
- obter o token para o modo de filtro API, consulte session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)