什么是 cookie?
cookie 是一种存储在用户浏览器中的小文本文件,用于完成网页与浏览器之间的数据交换。一次 HTTP 请求只能传递少量的数据,而 cookie 可以在浏览器与服务器之间存储更多数据,可以使登录状态等信息得以保留。
什么是 cookie-parser?
cookie-parser 是一个 Node.js 的第三方中间件,用于解析浏览器发送的 cookie,并将解析出的 cookie 存储在 req.cookies 对象中,供后续程序使用。
cookie-parser 的安装非常简单:
--- ------- -------------
cookie-parser 的使用方法
首先在 Node.js 中导入 cookie-parser 模块:
----- ------------ - -------------------------
在使用 cookie-parser 之前,需要通过 express 的 use 方法将其作为中间件注册到服务器中:
----- ------- - ------------------- ----- --- - ---------- ------------------------
在这之后,当浏览器在请求中传递了 cookie 时,cookie-parser 会自动解析 cookie,并将其以键值对的形式存储在 req.cookies 对象中。
可以在路由方法中通过 req.cookies 访问解析出的 cookie:
------------ ----- ---- -- - -- ---------------------- - ---------------------------------- - ---- - ------------- --------- - ---
以上代码在访问根目录时,判断是否有名为 username 的 cookie。如果有,则将其输出到控制台,否则,向浏览器发送“未设置 cookie”的消息。
什么是 cookie-session?
cookie-session 是一个基于 cookie 的会话中间件,提供了可持久化的会话状态。与 cookie-parser 不同,cookie-session 并不是将数据存储在客户端的 cookie 中,而是将数据加密后存储在服务端的 cookie 中。
cookie-session 也可以通过 NPM 安装:
--- ------- --------------
cookie-session 的使用方法
使用 cookie-session 需要先配置一个密钥(secret),用于加密 cookie 数据。在 Express 中,可以通过 app.use 方法将 cookie-session 注册为中间件:
----- ------------- - -------------------------- ----------------------- ----- ---------- ----- --------------- ------- -- - -- - -- - ---- -- -- ------ ------ -- -- ----
在上面的代码中,name 参数用于设置 cookie 的名称,keys 参数是用于进行数据加密的秘钥,maxAge 参数用于设置 cookie 的有效时间。
在路由中,可以通过访问 req.session 对象来读取和设置会话状态:
------------ ----- ---- -- - -- ---------------------- - ---------------------------------- - ---- - -------------------- - ------------ - ---
在以上代码中,如果 req.session.username 已经存在,则输出其值。否则,将 username 的值设置为“test-user”。
总结
cookie-parser 和 cookie-session 中间件是 Node.js 处理 cookie 的两个重要工具,它们能够帮助你实现基于 cookie 的用户认证、数据传输等功能。这里只是介绍了 cookie-parser 和 cookie-session 的基础使用方法,更多详细的配置信息和 API 可以查阅官方文档进行了解。
示例代码
----- ------- - ------------------- ----- ------------ - ------------------------- ----- ------------- - -------------------------- ----- --- - ---------- ------------------------ ----------------------- ----- ---------- ----- --------------- ------- -- - -- - -- - ---- ---- ------------ ----- ---- -- - -- ---------------------- - ---------------------------------- - ---- - ------------- --------- - -- ---------------------- - ---------------------------------- - ---- - -------------------- - ------------ - --- ---------------- -- -- - ------------------- --------- -- ---- ------- ---
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/646c8c20968c7c53b0b823bf