1.0.13 • Published 10 months ago

doix-http-cookie-redis v1.0.13

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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

NameTypeDefaultDescriptionNote
nameStringname of the cookie
ttlinttime to live, in minutesmultiplied by 60, passed to the Redis set command as the EX option
dbStringundefinedRedis connection namethe Redis connection must be available as this [options.db] in a Job instance
prefixString''prepended to the session ID to form the key for Redis cache
1.0.13

10 months ago

1.0.8

11 months ago

1.0.5

1 year ago

1.0.0

2 years ago

0.0.1

2 years ago