美文网首页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