Módulo comunitario incrible

sesión de fib

Middleware de sesión para fibjs

Instalar

1
npm install fib-session [--save]

Proba

1
npm run ci
1 2 3 4 5 6 7 8 9 10 11 12 13
var 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 13
var 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 JWT
    1 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_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)