фибо-сессия
Промежуточное ПО сеанса для fibjs
Установить
1npm install fib-session [--save]
Тест
1npm run ci
Создание промежуточного программного обеспечения сеанса на основе файлов cookie
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;
},
...
}
]);
Создание промежуточного программного обеспечения сеанса 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
}
]);
И параметры kv, и параметры сеанса находятся в одном и том же объекте.
варианты кв-магазина
параметры | по умолчанию | объект/Карта | ЛруКэш | УровеньБД | Редис | МонгоБД | SQLite/MySQL |
---|---|---|---|---|---|---|---|
имя_таблицы | "квс" | Икс | Икс | Икс | √ | √ | √ |
имя_ключа | "к" | Икс | Икс | Икс | Икс | √ | √ |
имя_значения | "в" | Икс | Икс | Икс | Икс | √ | √ |
key_size | 32 | Икс | Икс | Икс | Икс | Икс | √ |
значение_размера | 256 | Икс | Икс | Икс | Икс | Икс | √ |
Cleanup_interval (мс) | 60000 | Икс | Икс | Икс | Икс | Икс | √ |
тайм-аут (мс) | 0 | Икс | √ | Икс | √ | √ | √ |
префикс | "" | √ | √ | √ | √ | √ | √ |
кэш | ЛОЖЬ | √ | √ | √ | √ | √ | √ |
размер кэша | 65536 | √ | √ | √ | √ | √ | √ |
кэш_таймаут (мс) | 60000 | √ | √ | √ | √ | √ | √ |
параметры сеанса
параметры | по умолчанию | |
---|---|---|
session_cache_size | 65536 | максимальное количество сессий в кеше |
session_cache_timeout (мс) | 900000 | очистить объекты сеанса, которые не используются в течение определенного периода времени, из буфера, по умолчанию 15 минут |
session_cache_delay | 100 | задержка времени для сеанса записи в постоянное хранилище |
session_id_name | "идентификатор сессии" |
- Кэш сеанса используется для обеспечения согласованности сеансов среди требований HTTP.
таймаут кэша сеанса должен быть больше его задержки
На стороне клиента есть только идентификатор сеанса.Сеанс работает на стороне сервера.
Методы
session.setup()
настроить серверную базу данных.
v = session.cookie_filter
возвращает фильтр сеансов на основе файлов cookie.
session.api_filter
возвращает фильтр сеанса на основе заголовка.
session.api_token
возвращает обработчик API, который получает новый идентификатор сеанса.
Веб-токен JSON (JWT)
параметры
параметры | по умолчанию | |
---|---|---|
session_jwt_algo | нулевой | см. jws.АЛГОРИТМЫ в fib-jws |
session_jwt_key | нулевой | ключ подписи. см. в fib-jws |
- см. fib-jws https://github.com/fibjs/fib-jws
- установите session_jwt_algo и session_jwt_key, чтобы включить 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 })
Методы
session.setTokenCookie
- установите веб-токен JSON в файл cookie
- Sign_key для подписи может отличаться от session_jwt_key в зависимости от алгоритма.
- согласно спецификации JSON Web Token, один пользовательский сеанс может быть вызван setTokenCookie только один раз для установки информации о пользовательском сеансе. Второй выдаст исключение: новая ошибка («Невозможно изменить JSON Web Token»)
- значение по умолчанию 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
- получить токен для режима фильтра API, см. session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)