Skip to content

Instantly share code, notes, and snippets.

@crguezl
Last active April 14, 2023 04:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save crguezl/c0a8ee1b57626066b0031edb5ab769a7 to your computer and use it in GitHub Desktop.
Save crguezl/c0a8ee1b57626066b0031edb5ab769a7 to your computer and use it in GitHub Desktop.
express-session example
/*
http://code.runnable.com/UTlPPF-f2W1TAAET/how-to-use-cookies-in-express-for-node-js
http://expressjs.com/api.html#cookieParser
http://expressjs.com/api.html#res.cookie
http://expressjs.com/api.html#req.cookies
*/
var express = require('express'),
cookieParser = require('cookie-parser'),
bodyParser = require('body-parser'),
app = express();
var util = require('util');
// parses request cookies, populating
// req.cookies and req.signedCookies
// when the secret is passed, used
// for signing the cookies.
app.use(cookieParser('my secret here'));
// parses json, x-www-form-urlencoded, and multipart/form-data
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
const minute = 60 * 1000;
app.get('/', function(req, res){
if (req.cookies.remember) {
res.cookie('remember', Number(req.cookies.remember) + 1, { maxAge: minute });
console.log(req.cookies.remember);
res.send(`Remembered :${req.cookies.remember}. Click to <a href="/forget">forget</a>!.`);
} else {
res.send(`
<form method="post">
<p>Check to
<label>
<input type="checkbox" name="remember"/> remember me
</label>
<input type="submit" value="Submit"/>.</p>
</form>
`);
}
});
app.get('/forget', function(req, res){
res.clearCookie('remember');
res.redirect('back');
});
app.post('/', function(req, res){
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
res.redirect('back');
});
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
var express = require('express');
var session = require('express-session');
var util = require('util');
var app = express();
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
name: "mycookiesession"
}));
app.use(function (req, res, next) {
var views = req.session.views;
(!views) && (views = req.session.views = {});
// get the url pathname
var pathname = req.url;
console.log(`pathname = ${pathname}`);
// count the views
views[pathname] = (views[pathname] || 0) + 1
next()
})
app.get('/:chuchu', function (req, res, next) {
console.log(`req.params.chuchu = ${req.params.chuchu}`);
console.log(`req.session = ${util.inspect(req.session, {depth: null})}`);
res.send('you viewed this page ' + req.session.views['/'+req.params.chuchu] + ' times')
})
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
{
"name": "simple-example",
"version": "1.0.0",
"description": "",
"main": "hello-session.js",
"dependencies": {
"body-parser": "^1.15.0",
"cookie-parser": "^1.4.1",
"cookie-session": "^1.2.0",
"express": "^4.13.4",
"express-session": "^1.13.0",
"parse-url": "^1.3.0",
"parseurl": "^1.3.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment