1.0.13 • Published 1 year ago
doix-http-cookie-redis v1.0.13
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-redisUsage
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
nameset, its value will be considered the session ID andjob.userwill be fetched from the Redis cache by the keyprefix + ID; - if by the
endevent thejob.userproperty is defined an notnull, the Redis cache will contain the JSON serializedjob.uservalue stored by the corresponding key to be expired inttlminutes; - if
job.useris null or undefined onstartbut defined and notnullby theend, a new session ID will be generated (as crypto.randomUUID) and theSet-CookieHTTP header will be issued to store it on the client; - if
job.userdefined and notnullonstartbut is null or undefined by theendtheSet-CookieHTTP 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 |