express中使用express-session,cookie-parser

一,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')

发布了319 篇原创文章 · 获赞 124 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_40323256/article/details/103152587