读取签名后的cookie

首先我们给客户端发一个cookie,并且签名

const express=require('express');
const cookieParser=require('cookie-parser');

var server=express();
server.listen(3000);

server.use('/',function(req,res){
  //签名钥匙
  req.secret='abc';
  //需要把signed设置为true
  res.cookie('use','wzz',{signed:true});
  res.send('ok');
});

可以发现cookie顺利被上了签名
然后我们用下面这条代码读取cookie

console.log(req.cookies);

结果我们发现控制台输出了undefined.
因为req上的cookies属性本来就是没有的,是中间件cookie-parser加上去的
所以我们必须要用cookie-parser中间件

const express=require('express');
const cookieParser=require('cookie-parser');

var server=express();
server.listen(3000);

//我们需要使用cookie-parser这个中间件
//因为这样req上才会有cookies属性
server.use(cookieParser())

server.use('/',function(req,res){
  //签名钥匙
  req.secret='abc';
  //需要把signed设置为true
  res.cookie('user','wzz',{signed:true});
  res.send('ok');
  console.log(req.cookies);
});

然后我们发现控制台输出了

{ user: 's:wzz.cP8t885kY/VDQhJXbreu/uAIYkdJbj1xv7q1l5kOrxo' }

这个并不是我们想要的,因为我们想解析签名过后的内容,输出原来的内容
因此我们需要把签名的字符串作为参数给cookieParser
当我们把签名的字符串给了cookieParser后,req.cookies就发生了改变,req.cookies就指没有签名过的cookie,而我们还有一个属性就是signedCookies,这里存放签名过的cookies,并将他解析出来.

const express=require('express');
const cookieParser=require('cookie-parser');

var server=express();
server.listen(3000);

//我们需要使用cookie-parser这个中间件
//因为这样req上才会有cookies属性
server.use(cookieParser('abc'))

//对favicon.ico做一个处理
server.use('/favicon.ico',function(req,res){
  return 0;
});
server.use('/',function(req,res){
  //签名钥匙
  req.secret='abc';
  //需要把signed设置为true
  res.cookie('user','wzz',{signed:true});
  res.send('ok');
  console.log(req.cookies);//未签名的cookies
  console.log(req.signedCookies);//已签名的cookies
});

我们发现最后输出

{}
{ user: 'wzz' }

你可能感兴趣的:(读取签名后的cookie)