Fork of webcc/cassandra-store. It differs slightly in implementation, making use Cassandra TTL functionality for session expiry.
Implementation of the session storage in Apache Cassandra as express middleware.
$ npm install --save cassandra-store
Usage within express:
const session = require("express-session");
const CassandraStore = require("cassandra-store");
app.use(session({
store: new CassandraStore(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:
options.client
is supplied a new one is created using options.clientOptions
table: "sessions_store.sessions"
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
# Export Cassandra host address
export DBHOST=cassandra.example.org
# Initialize schema
cqlsh -f ./cql/create.cql
# Run tests with
npm test
cassandra-driver@4.0.0
mocha@3.4.1
, cassandra-driver@3.2.1
, express-session@1.15.2
uuid@3.0.1
, mocha@3.2.0
, cassandra-driver@3.2.0
, express-session@1.15.1
uuid@2.0.3
, mocha@3.1.0
cassandra-driver@3.1.3
, express-session@1.14.1