Skip to main content
0

เกริ่นนำ

Cookie และ Session เป็นเทคโนโลยีที่ใช้ในการเก็บข้อมูลบนฝั่ง Client และฝั่ง Server การเลือกใช้งาน Cookie หรือ Session ขึ้นอยู่กับความต้องการและข้อจำกัดต่าง ๆ ในการพัฒนาแต่โดยรวมแล้ว Cookie และ Session ใน Express มีประโยชน์ดังต่อไปนี้

  • การเข้าสู่ระบบและการจัดการผู้ใช้: Cookie และ Session สามารถใช้เพื่อเก็บข้อมูลเกี่ยวกับผู้ใช้ เช่น ชื่อผู้ใช้ รหัสผ่าน หรือข้อมูลอื่น ๆ ที่จำเป็นสำหรับการเข้าสู่ระบบ ซึ่งช่วยให้ผู้ใช้สามารถเข้าสู่ระบบและใช้งาน API ได้โดยไม่ต้องป้อนข้อมูลซ้ำทุกครั้ง
  • การติดตามผู้ใช้: Cookie และ Session สามารถใช้เพื่อติดตามการใช้งานของผู้ใช้ ซึ่งช่วยให้เราเข้าใจพฤติกรรมของผู้ใช้และปรับปรุงประสบการณ์การใช้งาน API
  • การปรับปรุงประสิทธิภาพ: Cookie และ Session สามารถใช้เพื่อจัดเก็บข้อมูลชั่วคราว ซึ่งช่วยลดจำนวนคำขอที่ส่งไปยัง API จริง ซึ่งช่วยให้ปรับปรุงประสิทธิภาพของ API

ใน Express เราสามารถใช้งาน Cookie ได้โดยการติดตั้ง middleware ของ cookie-parser ดังนี้

npm install cookie-parser

จากนั้นเพิ่ม middleware ของ cookie-parser ลงในไฟล์ server.js ดังนี้

const express = require('express');
const cookieParser = require('cookie-parser');

const app = express();

app.use(cookieParser());

app.get('/', (req, res) => {
  // แสดงข้อมูล Cookie
  res.send(req.cookies);
});

app.listen(3000);

ตัวอย่างการใช้งาน Cookie ใน Express เช่น

app.get("/setCookies", (req, res) => {
  // res.cookies.[ชื่อcookie] เมื่อมีการเข้ามาในเว็บ ทาง server จะ response ส่ง cookies ออกไป

  res.cookie("username", "john@doe", {
    maxAge: 3600 // กำหนด timeout หน่วยเป็น millisecond
  });
  // หากต้องการให้ API ตัดการเชื่อมต่อใส่คำสั่ง res.end() เพื่อตัดการเชื่อมทันทีไม่อย่างนั้นจะโหลดจนกว่าจะ timeout
  console.log(req.cookies["username"]);
  res.end();
});

การใช้งาน Session ใน Express

ใน Express เราสามารถใช้งาน Session ได้โดยการติดตั้ง middleware ของ express-session ดังนี้

npm install express-session

จากนั้นเพิ่ม middleware ของ express-session ลงในไฟล์ server.js ดังนี้

const express = require('express');
const session = require('express-session');

const app = express();

// กำหนดค่า Session
const sessionConfig = {
  secret: 'secret',
  resave: true, // บันทึก session ทุกครั้งที่มีการร้องขอ
  saveUninitialized: true, // บันทึก session ทุกครั้งที่มีการร้องขอ โดยไม่คำนึงว่า session จะมีข้อมูลหรือไม่
  maxAge: 3600,
};

app.use(session(sessionConfig));

app.get('/', (req, res) => {
  // แสดงข้อมูล Session
  res.send(req.session);
});

app.listen(3000);

ตัวอย่างการใช้งาน Session ใน Express เช่น

app.get('/login', (req, res) => {
  // ตั้งค่า Session
  req.session.username = 'johndoe';
  req.session.password = 'secret';

  // แสดงข้อความแจ้ง
  res.send('เข้าสู่ระบบสำเร็จ');
});

ความแตกต่างระหว่าง Cookie และ Session

คุณสมบัติCookieSession
ตำแหน่งที่เก็บข้อมูลเบราว์เซอร์ของผู้ใช้เซิร์ฟเวอร์ของผู้ให้บริการ
ความปลอดภัยต่ำกว่าสูงกว่า
ระยะเวลาอยู่ได้นานหลายเดือนหรือหลายปีอยู่ได้เพียงไม่กี่นาทีหรือหลายชั่วโมง
การใช้งานทั่วไปเฉพาะบางกรณี

อ้างอิง

cookie-parser, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://expressjs.com/en/resources/middleware/cookie-parser.html

cookie-parser.js, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://gist.github.com/wdrdres3qew5ts21/c4ea4227a576aec9b5cbd7913832b90e

express-session, สืบค้นเมื่อ 10 ตุลาคม 2566
จาก: https://expressjs.com/en/resources/middleware/session.html

Tanamit Ruenjit

Author Tanamit Ruenjit

More posts by Tanamit Ruenjit

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า