sesión de fib
Middleware de sesión para fibjs
Instalar
1npm install fib-session [--save]
Proba
1npm run ci
Creación dun 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;
},
...
}
]);
Creación dun 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 | LevelDB | Redis | MongoDB | SQLite / MySQL |
---|---|---|---|---|---|---|---|
nome_táboa | "kvs" | x | x | x | √ | √ | √ |
nome_clave | "k" | x | x | x | x | √ | √ |
nome_valor | "v" | x | x | x | x | √ | √ |
key_size | 32 | x | x | x | x | x | √ |
valor_tamaño | 256 | x | x | x | x | x | √ |
limpeza_intervalo (ms) | 60000 | x | x | x | x | x | √ |
tempo de espera (ms) | 0 | x | √ | x | √ | √ | √ |
prefixo | "" | √ | √ | √ | √ | √ | √ |
caché | falso | √ | √ | √ | √ | √ | √ |
tamaño_caché | 65536 | √ | √ | √ | √ | √ | √ |
tempo_de_caché (ms) | 60000 | √ | √ | √ | √ | √ | √ |
opcións de sesión
opcións | por defecto | |
---|---|---|
session_cache_size | 65536 | número máximo de sesións na caché |
session_cache_timeout (ms) | 900000 | limpa os obxectos de sesión que non se operan durante un período de tempo desde o búfer, por defecto 15 minutos |
sesión_cache_delay | 100 | atraso da sesión de escritura ao almacenamento persistente |
nome_id_ sesión | "ID de sesión" |
- a caché de sesión úsase para manter a coherencia da sesión entre as necesidades de http.
o tempo de espera da caché de sesión debe ser maior que o seu atraso
O lado do cliente só ten o ID de sesión. A sesión opera no lado do servidor.
Métodos
session.setup()
configure a base de datos de backend.
v = session.cookie_filter
devolve un filtro de sesión baseado en cookies.
session.api_filter
devolve un filtro de sesión baseado na cabeceira.
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 |
session_jwt_key | nulo | clave de sinal. ver en fib-jws |
- ver fib-jws https://github.com/fibjs/fib-jws
- configure session_jwt_algo e session_jwt_key para habilitar 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 en 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 obter información de sesión de usuario definida. A segunda lanzará unha excepción: novo Erro ("Non se pode modificar o Token web JSON")
- 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 token para o modo de filtro api, consulte session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)