doix-http-cookie-redis

1.0.13 • Public • Published

workflow Jest coverage

node-doix-http-cookie-redis is a plug in for the doix framework providing an HTTP cookie based session mechanism using Redis for state storage.

Installation

npm install doix-http-cookie-redis

Usage

In your WebService descendant:

const {WebService} = require ('doix-http')
const {CookieRedis} = require ('doix-http-cookie-redis')

module.exports = class extends WebService {
  constructor (app, o) {
    super (/*...*/)
    new CookieRedis ({
//      name: 'sid',
//      ttl: 60,
//      prefix: 'session_',
        db: {
          host: "127.0.0.1",
          port: 6379,
        },
    }).plugInto (this)
  }
}

After that for each job produced with that WebService:

  • if the incoming HTTP request has the cookie name set, its value will be considered the session ID and job.user will be fetched from the Redis cache by the key prefix + ID;
  • if by the end event the job.user property is defined an not null, the Redis cache will contain the JSON serialized job.user value stored by the corresponding key to be expired in ttl minutes;
  • if job.user is null or undefined on start but defined and not null by the end, a new session ID will be generated (as crypto.randomUUID) and the Set-Cookie HTTP header will be issued to store it on the client;
  • if job.user defined and not null on start but is null or undefined by the end the Set-Cookie HTTP header will be issued to erase the previously used session ID.

Options

Name Type Default Description Note
name String name of the cookie
ttl int time to live, in minutes multiplied by 60, passed to the Redis set command as the EX option
db String undefined Redis connection name the Redis connection must be available as this [options.db] in a Job instance
prefix String '' prepended to the session ID to form the key for Redis cache

/doix-http-cookie-redis/

    Package Sidebar

    Install

    npm i doix-http-cookie-redis

    Weekly Downloads

    1

    Version

    1.0.13

    License

    MIT

    Unpacked Size

    29.5 kB

    Total Files

    10

    Last publish

    Collaborators

    • do-