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

выдумка

Промежуточное ПО сеанса для 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 и параметры сеанса находятся в одном объекте.

варианты кв-магазина

параметры дефолт объект / карта LruCache LevelDB Redis MongoDB SQLite / MySQL
table_name "квс" Икс Икс Икс
key_name "к" Икс Икс Икс Икс
value_name "v" Икс Икс Икс Икс
key_size 32 Икс Икс Икс Икс Икс
value_size 256 Икс Икс Икс Икс Икс
интервал_чистки (мс) 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 нулевой см. jws.ALGORITHMS в fib-jws
session_jwt_key нулевой ключ подписи. см. в 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 в cookie
  • sign_key для подписи, может отличаться от session_jwt_key, в зависимости от алгоритма.
  • Согласно спецификации веб-токена JSON, один сеанс пользователя может быть вызван setTokenCookie только один раз для установки информации о сеансе пользователя. Второй вызовет исключение: новая ошибка («Невозможно изменить веб-токен JSON»)
  • значение по умолчанию 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_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)