一,express-session
安装:cnpm i express-session -S
写:req.session.key=value
读:req.session.key
app.js中引入
var session=require('express-session')
app.use(session({
secret: 'aaa',//签名,与上文中cookie设置的签名字符串一致
resave: false,// 一个请求在另一个请求结束时对session进行修改覆盖并保存,默认值为true。建议设为false
saveUninitialized: true,//无论是否使用session,默认只要对页面发起请求,都会给客户端一个cookie
name: 'connect.sid', // // 在浏览器中生成cookie的名称key,默认是connect.sid
cookie:{
maxAge:1000*60 // session 的有效时长
}
}))
注意:app.use(session({xxx}))这段代码放在路由前面,切记!!如下
routes/users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
console.log(req.session)
console.log(req.session.username)
});
router.get('/a', function(req, res, next) {
req.session.username='李四'
req.session.password='123'
res.redirect('/users')
});
module.exports = router;
运行,输入:http://localhost:3000/users/a
销毁session
方法1:req.session.cookie.maxAge = 0;
方法2:req.session.destroy()
req.session.destroy((err) => {
console.log(err)
})
二,cookie-parser(express默认已安装)
安装:cnpm i cookie-parser -S
app.js中引入: var cookieParser = require('cookie-parser');
2.1 不使用签名的方式:app.use(cookieParser());
var cookieParser = require('cookie-parser');
app.use(cookieParser()); //不使用签名的方式
users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
console.log(req.cookies)
console.log(req.cookies.username)
});
router.get('/a', function(req, res, next) {
res.cookie('username','张三',{maxAge:1000*10})
res.cookie('password','123',{maxAge:1000*10})
res.redirect('/users')
});
module.exports = router;
运行:http://localhost:3000/users/a
2.2 使用签名的方式 app.use(cookieParser('签名字符串'));
比如设签名字符串为aaa,则有 : app.use(cookieParser('aaa'));
写cookie(记得加将signed属性设为true): res.cookie('key','value',{maxAge:1000*10,signed:true})
读所有cookie:req.signedCookies
读指定cookie:req.signedCookies.key
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
console.log(req.signedCookies)
console.log(req.signedCookies.username)
});
router.get('/a', function(req, res, next) {
res.cookie('username','张三',{maxAge:1000*10,signed:true})
res.cookie('password','123',{maxAge:1000*10,signed:true})
res.redirect('/users')
});
module.exports = router;
2.3 删除cookie :res.clearCookie('key')
比如删除key为age的cookie: res.clearCookie('age')