http-无状态的:两次访问之间,无区别,cookie可解决

cookie:在浏览器保存一些数据,每次请求都会带过来;

  弊端:可以查看修改,并不安全、大小有限(4K)

  读取--cookie-parser

  发送--

  

session:保存数据,保存在服务端,更加安全,大小无限

  基于cookie实现,通过cookie读取session值;cookie中会有一个session的ID,服务器利用session_id找到session文件、读取、写入

  隐患:session劫持--cookie加密、定期更换等

  cookie-session

1、发送cookie

  res.secret(签名);

  res.cookie(名字,值,{path:'/',maxAge:毫秒单位的有效期,signed:true}

2、读取cookie

  依赖cookie-parser 中间件  签名

    cookie-encrypter 中间件  加密

  server.use(cookieParser('asgewrwrfsf'));    //签名秘钥  必须和req.secret的一致  
  console.log('未签名的cookie:',req.cookies);   
  console.log('签名的cookie',req.signedCookies);
3、删除cookie
  res.clearCookie(名字)
 
const express = require('express');
const cookieParser = require('cookie-parser');      //读取cookie使用

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


server.use(cookieParser('asgewrwrfsf'));    //签名秘钥  必须和下面req.secret的一致,才能解析正确,下面无需重新声明

server.use('/',function(req,res){
  //req.secret = 'asgewrwrfsf';    //签名秘钥
  res.cookie('user','userName',{    //存cookie,发送cookie
    path:'/aaa/a.html',      //此目录下才能访问
    maxAge:30*24*2600*1000,    //有效期  30天
    signed:true,      //签名 ,依旧可以看见,但是可以防止篡改
  });

  //读取cookie,需要依赖cookie-parser中间件,分开接收
  console.log('未签名的cookie:',req.cookies);
  console.log('签名的cookie',req.signedCookies);

  // res.clearCookie('user',{path:'/aaa/a.html'});    //删除cookie

  res.send('ok');
})

session读写:

  依赖cookie-session中间件,cookie-parser

  session劫持预防,key必须设置

const express = require('express');
const cookieParser = require('cookie-parser');      //读取cookie使用
const cookieSession = require('cookie-session');

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


server.use(cookieParser());
var arr = [];
for(var i=0;i<100000;i++){
  arr.push('sig_'+Math.random());
};
server.use(cookieSession({
  name:'se',
  keys:arr,     //防session劫持
  maxAge:24*3600*1000,      //有效期
}));

server.use('/',function(req,res){
  console.log(req.session);
  if(req.session['count'] == null){
    req.session['count'] = 1;
  }else{
    req.session['count']++;
  }
 
 //删除session
 //delete req.session res.send(
'ok2'); })

  

 
01-10 04:33
查看更多