express 处理cookie session

1. 安装

cnpm install cookie-parser --save

cnpm i express-session --save

2. cookie和session的区别

(1)cookie是服务器发送给客户端的一段特殊信息,这些信息以文本文件形式存放在客户端,客户端向服务器发送请求时会带上这些信息,用来验证身份
(2)session是存储在服务器上的数据,相对于cookie安全性更高,在一个客户开始访问网站的时候,会生成一个sessionId,这个id每次访问都会带上,服务器会识别这个sessionid,并把与这个sessionid相关的数据都保存在服务器上,由此来实现客户端的状态

2. 设置和获取cookie信息
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();

// 引入中间件  解析cookie
app.use(cookieParser());


app.get('/set', (req, res) => {
    // maxAge: 设置过期时间单位ms  如果不设置过期时间,默认浏览器关闭失效
    // 设置cookie
    res.cookie('city', 'wuhan', { maxAge: 6 * 1000 })
    res.send('ok')
})


app.get('/get', (req, res) => {
    // 获取cookie
    res.send(req.cookies)
})

app.listen(7000);
3. 查看cookie信息

在这里插入图片描述

5. cookie 加密
/*

自定义本地域名  C:\Windows\System32\drivers\etc
*/


var express = require('express');

var app = express();

// 引入cookie处理中间件
var cookieParser = require('cookie-parser');

// 设置中间件
// 加盐用于cookie加密
app.use(cookieParser('abc'));

// 设置cookie
app.get('/set', function(req, res) {
    // maxAge: 设置过期时间
    // signed: true 加密cookie
    res.cookie('username', 'kanglun', { maxAge: 60 * 1000, signed: true })
    res.send('hello nodejs')
})

// 获取cookie
app.get('/get', function(req, res) {
    // signedCookies获取解密后的cookie
    res.send(req.signedCookies)
})

app.listen(3000);
6. cookie 案例
const express = require('express')
const cookieParser = require('cookie-parser')
const app = express()

app.use(cookieParser())


app.get('/:city', (req, res) => {
    // 去掉图标影响
    if (req.url == '/favicon.ico') return

    let city = req.params.city;
    // 获取浏览器储存的cookie  第一次为undefined  
    let allCity = req.cookies.city || []
    allCity.push(city)
    res.cookie('city', allCity, {
        maxAge: 900 * 1000
    })

    res.send('今天去了' + city)
})


app.get('/', (req, res) => {
    if (req.url == '/favicon.ico') return
    res.send('一共去了这些地方' + req.cookies.city)
})

app.listen(5000)
7. session案例
const express = require('express')
const sesion = require('express-session')
const app = express()

// 要求客户端设置一个加密的cookie
app.use(sesion({
    secret: 'heaven',
    cookie: { maxAge: 900 * 1000 },
    resave: true,
    saveUninitialized: true
}))


app.get('/', (req, res) => {
    // console.log(req.session)
    if (req.url === '/favicon.ico') return
    res.setHeader('content-type', 'text/html;charset=utf-8')

    res.send('一共去了这些城市' + req.session.city)

})

app.get('/:city', (req, res) => {
    if (req.url === '/favicon.ico') return
    let city = req.params.city
    // 设置session
    req.session.city = req.session.city || [];
    req.session.city.push(city)
        // console.log(req.session)
    res.setHeader('content-type', 'text/html;charset=utf-8')
    res.end('今天去了' + city)
})


app.listen(5000)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值