express框架cookie-parser和cookie-session的功能与区别丨技术开发分享录

express框架cookie-parser和cookie-session的功能与区别

{{ detail.nickname }}

转载 翻译 {{ formatTime(detail.create_time) }} 字数 {{ detail.content && detail.content.length }} 阅读 {{ detail.read_num }} {{ formatTag(v) }}

"`cookie-parser` 中间件用来解析客户端传过来的 `cookie`,`cookie-session` 中间件用来建立基于 `cookie` 的会话 `session`。\n\n## 一、安装 cookie-parser 和 cookie-session\n\n```shell\nnpm install cookie-parser\nnpm install cookie-session\n```\n\n## 二、使用 cookie-parser 解析\n\n```\nconst express = require('express');\nconst cookieParser = require('cookie-parser');\n \nlet app = express();\napp.listen(8888);\n \n//使用解析cookie中间件\n//cookieParser()参数一,用来设置签名密钥,可以是一个数组,设置多个。\napp.use(cookieParser());\n \napp.get('/', function (req, res) {\n    //获取cookie信息\n    console.log('Cookies: ', req.cookies);\n \n    //设置cookie\n    //参数一表示,cookie名称\n    //参数二表示,cookie的值\n    //参数三表示,cookie的配置选项\n    // domain 域名\n    // path 路径\n    // expires 过期时间\n    // maxAge 有效时间(以毫秒为单位)\n    // httpOnly 只能由web服务器访问\n    // secure 是否与https一起使用\n    // signed 是否签名\n    res.cookie('test', 'test', {path: '/', expires: new Date(Date.now() + 3600 * 1000)});\n \n    res.cookie('name', 'xiaoxu', {maxAge: 3600 * 1000});\n \n    res.end();\n});\n```\n\n为了防止cookie信息被篡改,我们可以设置签名。\n\n```\nconst express = require('express');\nconst cookieParser = require('cookie-parser');\n \nlet app = express();\napp.listen(8888);\n \n//使用解析cookie中间件\n//cookieParser()参数一,用来设置签名密钥,可以是一个数组,设置多个。\napp.use(cookieParser('fermtp34n537m3o450'));\n \napp.get('/', function (req, res) {\n    //获取cookie信息\n    console.log('cookies: ', req.cookies);\n \n    //设置使用签名\n    res.cookie('test', 'test', {signed: true});\n \n    //使用签名的cookie通过下面方式获取\n    console.log('signedCookies: ', req.signedCookies);\n \n    res.end();\n});\n```\n  \n\n## 三、使用 cookie-session 处理会话\n\n注意 `cookie-session` 中间件是基于 `cookie` 的,会把会话信息存储在 `cookie` 里。\n\n```\nconst express = require('express');\nconst cookieSession = require('cookie-session');\n \nlet app = express();\napp.listen(8888);\n \napp.use(cookieSession({\n    //会话在cookie中的名称\n    name: 'session',\n    //用于签名的密钥\n    keys: ['j239r5ndgffte'],\n    //cookie过期时间,单位毫秒\n    maxAge: 3600 * 1000\n}));\n \napp.get('/', function (req, res) {\n    //获取会话数据\n    console.log(req.session);\n \n    //设置会话数据\n    req.session.name = 'xiaoxu';\n    req.session.age = 24;\n    req.session.sex = '男';\n \n    res.end();\n});\n```\n\n参考链接:\n\n- https://www.cnblogs.com/jkko123/p/10293576.html"
PS:写作不易,如要转裁,请标明转载出处。

如果此篇对您有帮助,可小额赞助,以兹鼓励!

猜你想看