sesión de fib
Middleware de sesión para fibjs
Instalar en pc
1npm install fib-session [--save]
Prueba
1npm run ci
Creación de 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;
},
...
}
]);
Creación de un middleware de sesión de 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 kv como las opciones de sesión están en el mismo objeto.
opciones de kv-store
opciones | defecto | objeto / Mapa | LruCache | LevelDB | Redis | MongoDB | SQLite / MySQL |
---|---|---|---|---|---|---|---|
nombre de la tabla | "kvs" | X | X | X | √ | √ | √ |
Nombre clave | "k" | X | X | X | X | √ | √ |
value_name | "v" | X | X | X | X | √ | √ |
tamaño_clave | 32 | X | X | X | X | X | √ |
tamaño del valor | 256 | X | X | X | X | X | √ |
cleanup_interval (ms) | 60000 | X | X | X | X | X | √ |
tiempo de espera (ms) | 0 | X | √ | X | √ | √ | √ |
prefijo | "" | √ | √ | √ | √ | √ | √ |
cache | falso | √ | √ | √ | √ | √ | √ |
tamaño del caché | 65536 | √ | √ | √ | √ | √ | √ |
cache_timeout (ms) | 60000 | √ | √ | √ | √ | √ | √ |
opciones de sesión
opciones | defecto | |
---|---|---|
session_cache_size | 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 del búfer, por defecto 15 minutos |
session_cache_delay | 100 | Retraso de tiempo para la sesión de escritura en el almacenamiento persistente |
session_id_name | "ID de sesión" |
- la caché de sesión se utiliza para mantener la coherencia de la sesión entre los requisitos de http.
el tiempo de espera de la caché de sesión debe ser mayor que su retraso
El lado del cliente solo tiene el ID de 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 encabezados.
session.api_token
devuelve un controlador de API que obtiene una nueva ID de sesión.
Token web JSON (JWT)
opciones
opciones | defecto | |
---|---|---|
session_jwt_algo | nulo | ver ALGORITMOS de jws en fib-jws |
session_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 JSON Web Token en la cookie
- sign_key para la firma, puede ser diferente de session_jwt_key, dependiendo del algoritmo.
- De acuerdo con la especificación JSON Web Token, una sesión de usuario solo se puede llamar 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 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
- obtener token para el modo de filtro api, consulte session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)