sesión de mentira
Middleware de sesión para fibjs
Instalar
1npm install fib-session [--save]
Prueba
1npm run ci
Crear un middleware de sesión basado 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 las opciones de kv como las de sesión están en el mismo objeto.
opciones de tienda kv
opciones | por defecto | objeto/Mapa | LruCache | NivelDB | Redis | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
nombre de la tabla | "kvs" | X | X | X | √ | √ | √ |
Nombre clave | "k" | X | X | X | X | √ | √ |
nombre_valor | "v" | X | X | X | X | √ | √ |
tamaño_clave | 32 | X | X | X | X | X | √ |
tamaño del valor | 256 | X | X | X | X | X | √ |
intervalo_limpieza(ms) | 60000 | X | X | X | X | X | √ |
tiempo de espera (ms) | 0 | X | √ | X | √ | √ | √ |
prefijo | "" | √ | √ | √ | √ | √ | √ |
cache | FALSO | √ | √ | √ | √ | √ | √ |
tamaño del caché | 65536 | √ | √ | √ | √ | √ | √ |
tiempo de espera de caché (ms) | 60000 | √ | √ | √ | √ | √ | √ |
opciones de sesión
opciones | por defecto | |
---|---|---|
tamaño_caché_sesión | 65536 | número máximo de sesiones en caché |
session_cache_timeout(ms) | 900000 | borrar los objetos de sesión que no se operan durante un período de tiempo desde el búfer, por defecto 15 minutos |
session_cache_delay | 100 | retraso de tiempo para la sesión de escritura en el almacenamiento persistente |
nombre_id_sesión | "ID de sesión" |
- El caché de sesión se utiliza para mantener la coherencia de la sesión entre los requisitos de http.
el tiempo de espera del caché de la sesión debe ser mayor que su retraso
El lado del cliente sólo tiene el ID de la sesión, la sesión se opera en el lado del servidor.
Métodos
session.setup()
configurar la base de datos backend.
v = session.cookie_filter
devuelve un filtro de sesión basado en cookies.
session.api_filter
devuelve un filtro de sesión basado en encabezado.
session.api_token
devuelve un controlador de API que obtiene una nueva ID de sesión.
Token web JSON (JWT)
opciones
opciones | por defecto | |
---|---|---|
sesión_jwt_algo | nulo | ver jws.ALGORITMOS en fib-jws |
sesión_jwt_key | nulo | clave de signo ver en fib-jws |
- ver fib-jws https://github.com/fibjs/fib-jws
- configure session_jwt_algo y 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
- configurar el token web JSON en la cookie
- sign_key para firma, puede ser diferente de session_jwt_key, según el algoritmo.
- De acuerdo con la especificación del token web JSON, una sesión de usuario solo puede llamarse setTokenCookie una vez para configurar la información de la sesión del usuario. La segunda generará una excepción: nuevo error ('No se puede modificar el 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
- obtenga el token para el modo de filtro API, consulte session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)