美文网首页Node.js
Node.js进阶之【11】 : cookie和session

Node.js进阶之【11】 : cookie和session

作者: 岚平果 | 来源:发表于2020-03-27 13:19 被阅读0次

    一、cookie和session简单说明

    • 1.cookie:
      【cookie】是在浏览器保存一些数据,每次数据请求浏览器都会把数据传给服务器,cookie容量小,只能储存数据【4k】,客户端能够通过 【document.cookie = "read_mode = xxl"】进行修改,所以并不安全。
      1. session:
        【session】保存数据,并且是保存在服务器上的,更安全,容量随服务器大小变化。

    二、有关cookie的操作

    一、向浏览器种下cookie
    • 1、 下载 【express、cookie-parser】
    cnpm install express cookie-parser
    
    • 2、第一种: 种下cookie数据不进行签名 【res.cookie】
    const express = require('express')
    let server = express();
    server.use('路径', (req,res) => {
      res.cookie('名称','名称的值',{path:'访问的路径',age})
      res.send('内容一')
    })
    server.listen(8080)
    

    预览:


    image.png
    • 3、 第二种:以签名式种下cookie数据
    const cookieParser = require('cookie-parser');
    let server = express();
    // server.use(cookieParser('要签名的字符串') 这里一定要写上,解析这个cookie-parser
    // cookie需要签名,必须要引入cookie-parser,并对其解析,把要签名的字符作为参数传入cookieParser中
    server.use(cookieParser('要签名的字符串'))
    server.use('路径',(req,res)=> {
      // server.recret('要签名的字符串')这里可以省略不写
      server.recret('要签名的字符串')
      // 对name这个cookie的值进行签名操作
      server.cookie('名称','名称的值', {signed:true})
      server.send('内容二')
    })
    server.listen(8080)
    

    预览:


    image.png
    二、服务器获取浏览器发送过来的cookie的值
    • 1、第一种: 获取不带加签名的cookie的数据 【req.cookies】
    const express = require('express');
    let server = express();
    server.use('路径',(req,res) =>{
      let data = req.cookies;
      res.send(`接收过来的cookie数据${data}`)
    })
    server.listen(8080)
    

    预览:


    image.png
    • 2、第二种:获取带签名的cookie的数据 【req.signedCookies】
    // 对写入的cookie进行签名并获取有签名的cookie的值
    const express = require('express');
    const cookiePariser = require('cookie-parser');
    
    let server = express();
    // cookie需要签名,必须要引入cookie-parser,并对其解析,把要签名的字符作为参数传入cookieParser中
    server.use(cookiePariser('sdfljsfk'))
    server.use('/', (req, res) => {
        // 对name这个cookie的值进行签名操作
        res.cookie('name', 'xxl',{signed: true})
        // 获取有签名的cookie
        console.log('有签名的cookie', req.signedCookies)
        res.send('server3')
    })
    server.listen(8083)
    

    预览:


    image.png
    三、删除浏览器上的cookie 【res.clearCookies('属性名')】
    // 删除浏览器的cookie
    const express = require('express');
    
    let server = express();
    server.use('/', (req, res) => {
        // res.clearCookie('属性名'),删除指定名的cookie
        res.clearCookie('name')
        console.log(res.cookies)
        res.send('server4')
    })
    server.listen(8084)
    

    预览:


    image.png

    ————————************************************************************************************************************——————

    三、session相关操作

      1. 下载【cookie-session】
    cnpm i cookie-session
    
      1. 向浏览器种下session的值
    const express = require('express');
    const cookieParser = require('cookie-parser');
    const cookieSession = require('cookie-session');
    
    let server = express();
    server.use(cookieParser());
    // cookie-session要放在cookie-parser后面,等把浏览器发过来的cookie解析掉,才能得到其值
    server.use(cookieSession({
        name: 'xxlsession',                     // 更改session的名称
        keys: ['aaa', 'bbb', 'ccc'],            // session会循环例用keys进行加密
        maxAge: 10*1000                         // 服务器session过期时间,以毫秒为单位
    }))
    
    server.use('/', (req, res) => {
        if(req.session['count'] === undefined) {
            req.session['count'] = 0;
        } else {
            req.session['count']++;
        }
        req.session['age'] = 5;
        console.log(req.session['age'])
        res.send('server')
    })
    server.listen(8080)
    

    预览:


    image.png
    • 3.删除session 【delete req.session】
    const express = require('express');
    const cookieParser = require('cookie-parser');
    const sessionCookie = require('cookie-session');
    let server = express();
    let arr = [];
    for(i=0; i<100000; i++) {
        arr.push('sign' + Math.random())
    }
    server.use(cookieParser());
    server.use(sessionCookie({
        keys: arr
    }))
    server.use('/', (req, res) => {
        delete req.session;
        console.log(req.session)
        res.send('server2')
    })
    server.listen(8082)
    

    预览:


    image.png

    相关文章

      网友评论

        本文标题:Node.js进阶之【11】 : cookie和session

        本文链接:https://www.haomeiwen.com/subject/vmqluhtx.html