node学习之cookie与session

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  这个是签名 保证无法篡改

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值