Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

redisess

Package Overview
Dependencies
Maintainers
0
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redisess

Powerful redis session manager for NodeJS

  • 2.3.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
8
decreased by-75.76%
Maintainers
0
Weekly downloads
 
Created
Source

NPM Version NPM Downloads Build Status Test Coverage

Dependencies DevDependencies Package Quality

Redisess

High performant advanced Redis session manager for NodeJS.

Installation

Redisess requires "ioredis" library to work. It has been tested for redis, node-redis and ioredis client libraries.

$ npm install ioredis redisess --save

Basic Usage

The example blow show how can you use Redisess in a simple express applicaiton.

import express from 'express';
import Redis from 'ioredis';
import {SessionManager} from 'redisess';

const client = new Redis(); 

const manager = new SessionManager(client, {
    namespace: 'myapp',
    additionalFields: ['groupId'],
    ttl: 120 // Default Time-To-Live value in seconds: 120 seconds
  });

const app = express();
 
app.get('/login', async function (req, res) {
  const userName = req.query.userName;
  const pass = req.query.password;
  //...Login application logic here
  
  const session = await sm.create(userName, {
      ttl: 240, // You can overwrite ttl value per session
      groupId: 111 // You can store additional values
  }); 
  res.send('Your session id is '+session.sessionId);
});

app.get('/killSession/:sessionid', async function (req, res) {
  await sm.kill(req.params.sessionid); 
  res.send('Session ' + req.params.sessionid + ' is closed');
});

app.get('/killUser/:userId', async function (req, res) {
  await sm.killUser(req.params.userId); 
  res.send('All sessions for user "' + req.params.userId +'" are closed.');
})
 
app.listen(3000);


SessionManager

prototype.count()

Returns the number of sessions within the last n seconds. Get all session count if n is not defined or zero

count(secs: number = 0): Promise<number>

Parameters
  • secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
  • Return value : Returns the number of sessions.

prototype.countForUser()

Retrieves session count of single user which were active within the last n seconds.

countForUser(userId: string, secs: number = 0): Promise<number>

Parameters
  • userId: Id of the user
  • secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
  • Return value : Returns the number of sessions.

prototype.create()

Creates a new session for the user

create(userId: string, props?: { ttl?: number, [index: string]: any }): Promise<Session>

Parameters
  • userId: Id of the user
  • props: Additional properties
    • ttl: Time-To-Live value in seconds
    • *...: Additional fields
  • Return value : Returns new created session.

prototype.get()

Retrieves session by sessionId

get(sessionId: string, noUpdate: boolean = false): Promise<Session>

Parameters
  • sessionId: Id of the session
  • noUpdate: Update state of the session
  • Return value : Returns new created session.

prototype.getAllSessions()

Retrieves all session ids which were active within the last n seconds.

getAllSessions(secs: number): Promise<string[]>

Parameters
  • secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
  • Return value : Returns the string array of all sessions.

prototype.getAllUsers()

Retrieves all user ids which were active within the last n seconds.

getAllUsers(secs: number): Promise<string[]>

Parameters
  • secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
  • Return value : Returns the string array of all users.

prototype.getUserSessions()

Retrieves session ids of single user which were active within the last n seconds.

getUserSessions(userId: string, n: number = 0): Promise<string[]>

Parameters
  • userId: Id of the user
  • n: The elapsed time since the last activity of the session.
  • Return value : Returns the string array of all sessions for an user.

prototype.getOldestUserSession()

Retrieves oldest session of user

getOldestUserSession(userId: string, noUpdate: boolean = false): Promise<Session>

Parameters
  • userId: Id of the user
  • noUpdate: Update state of the session
  • Return value : Returns new created session.

prototype.exists()

Returns true if sessionId exists, false otherwise

exists(sessionId: string): Promise<Boolean>

Parameters
  • sessionId: Id of the session
  • Return value : Returns Boolean.

prototype.kill()

Kills single session

kill(sessionId: string): Promise<void>

Parameters
  • sessionId: Id of the session
  • Return value : No return value.

prototype.killUser()

Kills all sessions of user

killUser(userId: string): Promise<void>

Parameters
  • userId: Id of the user
  • Return value : No return value.

prototype.killAll()

Kills all sessions for application

killAll(): Promise<void>

Parameters
  • No parameter value
  • Return value : No return value.

prototype.now()

Retrieves present time.

now(): Promise<number>

Parameters
  • No parameter value
  • Return value : Returns number.

prototype.quit()

Stops wipe timer

quit(): void

Parameters
  • No parameter value
  • Return value : No return value.

Session


prototype.sessionId

Returns session id value

sessionId(): string


prototype.userId

Returns user id value

userId(): string


prototype.ttl

Returns Time-To-Live value

ttl(): number


prototype.lastAccess

Returns the time (unix) of last access

lastAccess(): number


prototype.expires

Returns the time (unix) that session be expired.

expires(): number


prototype.expiresIn

Returns duration that session be expired.

expiresIn(): number


prototype.valid

Returns validation of session and user with last access control.

valid(): boolean


prototype.idle

Returns idle duration in seconds.

idle(): number


prototype.[additionalField]

Returns any additional field value


prototype.read()

Reads session info from redis server

read(): Promise<void>


prototype.get()

Retrieves user data from session.

get(key): Promise<any>

Parameters
  • key: string | Array | Object<String,*>
  • Return value : No return value.

prototype.set()

Stores user data to session

set(key, value): Promise<number>

Parameters
  • key: string | Object
  • value: *
  • Return value : Length of values.

prototype.kill()

Kills the session

kill(): Promise<void>


prototype.write()

Write session to redis server.

write(): Promise<void>


Node Compatibility

  • node >= 8.x

Change log

To see changelog click here

License

Available under MIT license.

Keywords

FAQs

Package last updated on 25 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc