razvanz / cassandra-store

Implementation of the session storage in Apache Cassandra as express middleware.
Other
0 stars 1 forks source link

Fork of webcc/cassandra-store. It differs slightly in implementation, making use Cassandra TTL functionality for session expiry.

cassandra-store Greenkeeper badge Build Status

Implementation of the session storage in Apache Cassandra as express middleware.

Installation

$ npm install --save cassandra-store

Usage

Usage within express:

const session = require("express-session");
const CassandraStore = require("cassandra-store");

app.use(session({
    store: new CassandraStore(options),
    ...
}));

Options

{
    table: "sessions",
    client: null, // an existing cassandra client
    clientOptions: { // more https://github.com/datastax/nodejs-driver
        contactPoints: [ "localhost" ],
        localDataCenter: 'datacenter1',
        keyspace: "sessions_store"
    }
};

Notes:

Configuring the database

To create the table in the Cassandra database, you need the execute the following CQL commands:

DROP KEYSPACE IF EXISTS sessions_store;

CREATE KEYSPACE sessions_store WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '1'
};

CREATE TABLE sessions_store.sessions (
   sid text,
   session text,
   PRIMARY KEY (sid)
) WITH default_time_to_live = 3600; // 1 hour

Test

# Export Cassandra host address
export DBHOST=cassandra.example.org

# Initialize schema
cqlsh -f ./cql/create.cql

# Run tests with
npm test

Changelog