首先我们给客户端发一个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' }