亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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前端工程師
手記
粉絲
9
獲贊與收藏
4

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消