somesession
v0.0.2
Published
Express.js sessions store abstraction library
Readme
Express.js Sessions Store Abstraction Library
Install with:
npm install somesessionBeware
somesessionwould only pull all its depdencies if installed with itsdevDependencies.
Considering production deployments, you would have to pick from these devDependencies, those you would actually rely on.
Include them from whatever parent project or other piece of code you'ld be loading somesession from.
- Write backend-agnostic code:
// cassandra
const storeOptions = { driver: 'cassandra', database: 'sessions', username: 'casuser', password: 'caspass', host: '3.4.5.6', table: 'sessions' };
// mysql
const storeOptions = ({ driver: 'mysql', database: 'sessions', username: 'myuser', password: 'mypass', host: '2.3.4.5', table: 'sessions' };
// postgres
const storeOptions = ({ driver: 'postgres', database: 'sessions', username: 'pguser', password: 'pgpass', host: '1.2.3.4', table: 'sessions' };
// redis
const storeOptions = ({ driver: 'redis', database: 0, password: 'redisauthpass', host: '4.5.6.7' };
// defaults to sqlite
const storeOptions = ({ database: 'sessions.sqlite', path: './', table: 'sessions' };
const bodyParser = require('body-parser');
const express = require('express');
const http = require('http');
const session = require('express-session');
const store = require('somesession');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const storage = store(storeOptions, session);
app.use(session({
cookie: { secure: process.env.NODE_ENV === 'production' },
store: storage, secret: 'secr3t',
resave: false, saveUninitialized: false,
cookie: { maxAge: 86400 }
});
const httpServer = http.createServer(app);
app.get('/', (req, res) => {
if (req.session !== undefined && req.session.userid !== undefined && req.session.userid !== false) {
res.send(req.session.userid);
} else { res.send('unauthenticated'); }
});
app.post('/login', (req, res) => {
let userId = req.body.userId || false;
if (userId !== false) { req.session.userid = userId; }
res.redirect('/');
});
app.post('/logout', (req, res) => {
if (req.session !== undefined && req.session.userid !== undefined && req.session.userid !== false) {
req.session.userid = false;
req.session.destroy();
delete req.session;
}
res.redirect('/');
});
port = port || 8080;
httpServer.listen(port, '127.0.0.1', (err, res) => {
if (err) { reject(err); }
console.log(`mock server listening on 127.0.0.1:${port}`);
resolve(httpServer);
});