cookie---------保存游览器的一些数据,并且每次向服务器发送请求的时候都会带到后台, 用户可以非常轻松的更改cookie,非常不安全,有限制(4k)
session--------保存数据用的,保存在服务器端,相对比较安全,无限的;session不可能独立存在,它是基于cookie实现的,cookie中会有一个session的id,服务器利用sessionid找到session文件、读取、写入, 隐患:session_id session劫持
cookie的使用 (cookie-parser中间件)
1、发送cookie--------------res.cookie('user','tangwei');
2、读取cookie--------------需要用到中间件cookie-parser server.use(cookieParser('你加密用到的签名'))
console.log(req.cookies) //未签名的cookie
console.log(req.signedCookies) //签名的cookie
3、删除cookie--------------res.clear('cookie名')
发送一个cookie-------------
参数 path:只针对哪个路径有用 maxAge:有效时间 signed:是否加密
res.cookie('user','tangwei');
res.cookie('user','tangwei',{path:'/aaa',maxAge:30*24*3600*1000});
res.cookie('user','tangwei',{signed:true}); //加密
读取cookie---------------
需要使用到中间件cookie-parser
const cookieParser=require('cookie-parser');
server.use(cookieParser())
console.log(req.cookies)
注:那些可以读取 比方设置/aaa有cookie 那么/aaa 以及/aaa/a.html 都可以访问 否则不能读取
实现对cookie的加密--------------
1、加上签名 req.secret='shfksfjksjdfkljdslf';
加上签名之后打印req.cookies是 's:tangwei.XfmdczJZWZOPog/myvJqASq4gKJdaoFlSkJK1+75n5I'
可以杜绝cookie被修改
实现对cookie解密-----------
规定的签名方式
server.use(cookieParser(shfksfjksjdfkljdslf))
console.log(req.signedCookies) //读取签过名的cookie
注:专门加密cookie的中间件 cookie-encrypter 可以自己去自己了解
session的相关笔记 (cookie-session中间件)
server.use(cookieSession(
{
keys:['aaa','bbb','ccc'] , //数组里存放的是秘钥组 也可以多个秘钥
//其他参数 不必要
name:'sesseionid', //sessionid名
maxAge:2*3600+1000, //有效期 2天
}
));
设置一个session
req.session['count']=1;
获取session
console.log(req.session['count']) //读取session
删除session
删除 delete req.session['session名']
cookie的相关代码
// 开始 安装npm install express-static cookie-parser cookie-session
// 安装 express express-static
const express=require('express');
const expressStaic=require('express-static');
const cookieParser=require('cookie-parser');
const bodyParse=require('body-parser'); //用来解析post的请求的中间件
var server=express();
server.listen(8080);
server.use(cookieParser('shfksfjksjdfkljdslf'))
//cookie
server.use('/',function(req,res){
req.secret='shfksfjksjdfkljdslf'; //加密cookie
res.cookie('user','tangwei',{signed:true}); //发送一个cookie
console.log(req.cookies) //读取cookie
console.log(req.signedCookies) //读取签过名的cookie
res.clear('user') //删除cookie
res.send('ok')
})
server.use(expressStaic('./www')); //从哪里读取文件
//执行代码 在游览器中会发现生成了一个cookie
session的相关代码
// 开始 安装npm install express express-static cookie-parser cookie-session
// 安装
const express=require('express');
const expressStaic=require('express-static');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
var server=express();
server.listen(8080);
//session
server.use(cookieParser());
server.use(cookieSession(
{
keys:['aaa','bbb','ccc'] , //数组里存放的是秘钥组 也可以多个秘钥
//其他参数 不必要
name:'sesseionid', //sessionid名
maxAge:2*3600+1000, //有效期 2天
}
));
server.use('/',function(req,res){
if(req.session['count']==null){
req.session['count']=1;
}else{
req.session['count']++;
}
console.log(req.session['count']) //读取session
res.send('ok')
})
server.use(expressStaic('./www')); //从哪里读取文件
//执行代码 在游览器中会发现生成cookie
// express:sess 这个是sessionid
// express:sess.sig 这个是签名 保证无法篡改