继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第5天 Node.js开发博客——Cookie session介绍、对cookie做限制

皮小西
关注TA
已关注
手记 14
粉丝 7
获赞 2

课程信息

课程名称: Node.js+Express+Koa2+开发Web Server博客
课程章节: 第6章 博客项目之登录
课程讲师: 双越

课堂笔记

1、Cookie介绍

1.Cookie简介

Cookie存储在浏览器中的一段字符串(最大5kb)。跨域不共享(每个域名存储不一样的Cookie)。格式如:k1=v1;k2=v2;k3=v3;因此可以存储格式化数据。
每次发送HTTP请求,会将请求域的Cookie一起发送给Server。Server可以修改Cookie并返回给浏览器。浏览器中也可以通过JavaScript修改Cookie(有限制)。

2.客户端查看cookie的方式

(1)Network
浏览器审查元素→Network
图片描述
(2)document.cookie
同时还可用累加方法修改cookie。
图片描述
(3)Application
浏览器审查元素→Application
图片描述

2、cookie用于登录验证

router/user.js:

const { login } = require("../controller/user")
const { SuccessModel, ErrorModel } = require("../model/resModel")
const handleBlogRouter = (req, res) => {
  const method = req.method
  // 登录
  if (method === "GET" && req.path === "/api/user/login") {
    const { username, password } = req.query
    const result = login(username, password)
    return result.then(data => {
      if (data.username) {
        // 操作cookie
        res.setHeader("Set-Cookie", `username=${data.username}; path=/`)
        return new SuccessModel()
      }
      return new ErrorModel("登陆失败")
    })
  }
}
module.exports = handleBlogRouter

3、对cookie做限制

说明:设置httpOnly,以及设置过期时间。

4、Session介绍与使用

1.Session简介

cookie会暴露username,非常危险。
解决方法:cookie中存储userid(如随机数),server端对应username。
使用Session,即server端存储用户信息。

cookie和session登录的原理:
客户输入账号密码进行登录,服务器端进行验证,验证成功则生成sessionId,并且在session对象中存储当前用户信息。
服务器端将sessionId写入客户端cookie中,当客户端下次访问服务器端时cookie会被自动发送给服务器端,服务器端在cookie中拿到sessionId然后在服务器端的session对象中查找sessionId进行验证,验证成功说明用户是登陆状态,则可以为其响应只有在登陆状态才能响应的数据。
总结:
req.cookie是保存在本地浏览器中(可以在浏览器的Network中看到cookie值),而req.session是保存在服务器中的(而在本地浏览器中不存在)。浏览器根据cookie的userid值去读取session的值。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP