doix-http-cookie-redis
v1.0.13
Published
doix http cookie based sessions using redis
Downloads
3
Readme
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 andjob.user
will be fetched from the Redis cache by the keyprefix + ID
; - if by the
end
event thejob.user
property is defined an notnull
, the Redis cache will contain the JSON serializedjob.user
value stored by the corresponding key to be expired inttl
minutes; - if
job.user
is null or undefined onstart
but defined and notnull
by theend
, a new session ID will be generated (as crypto.randomUUID) and theSet-Cookie
HTTP header will be issued to store it on the client; - if
job.user
defined and notnull
onstart
but is null or undefined by theend
theSet-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 |