为了账号安全,请及时绑定邮箱和手机立即绑定

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

课程信息

课程名称: 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的值。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
7
获赞与收藏
2

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消