Удивительный модуль сообщества

Фибо-сессия

Сеансовое промежуточное ПО для fibjs

устанавливать

1
npm install fib-session [--save]

Тестовое задание

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; }, ... } ]);

Создание промежуточного программного обеспечения сеанса 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 } ]);

Опции kv и sesion находятся в одном объекте.

Варианты KV-магазина

опции дефолт Объект / Карта LruCache LevelDB Redis MongoDB SQLite / MySQL
table_name «КВС» Икс Икс Икс
key_name «К» Икс Икс Икс Икс
value_name "V" Икс Икс Икс Икс
key_size 32 Икс Икс Икс Икс Икс
value_size 256 Икс Икс Икс Икс Икс
cleanup_interval (мс) 60000 Икс Икс Икс Икс Икс
Тайм-аут (мс) 0 Икс Икс
приставка «»
кэш ложный
размер кэша 65536
cache_timeout (мс) 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 значение NULL см. jws.ALGORITHMS в fib-jws
session_jwt_key значение NULL подписать ключ. см. в fib-jws
  • см. fib-jws https://github.com/fibjs/fib-jws
  • установите session_jwt_algo и session_jwt_key для включения 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 })

    методы

    session.setTokenCookie

  • установить JSON Web Token в cookie
  • sign_key for signature , может отличаться от session_jwt_key, в зависимости от алгоритма.
  • according to JSON Web Token specification , один сеанс пользователя может называться 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

  • get token for api filter mode , см. session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)