วิธีการใช้ JWT บน Nodejs แบบง่ายๆ
9 มีนาคม 2565
ติดตั้ง
npm i jsonwebtoken
Import
const jwt = require("jsonwebtoken");
สร้าง secret และ token
const secret = "12345";
const token = jwt.sign({
username: "somkiat001",
name: "Somkiat",
email:"[email protected]"
}, secret, {expiresIn: 5});
payload: ใส่ข้อมูลต่างๆ ของ user ไว้ เราสามารถใส่ข้อมูลประเภท String หรือ Object ก็ได้ครับ
ในตัวอย่างผมใช้ Object และใส่ username ชื่อเจ้าของบัญชี และ อีเมล์ไว้ข้างในครับ
secret: ใช้ในการ verify token
options: ใช้ในการตั้งค่า token เช่นใช้กำหนดวันหมดอายุหรือประเภท Algorithm ครับ
ผลลัพธ์จากการสร้าง token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNv
การตรวจสอบ token
jwt.verify(token, secret, function(err,decoded) {
if (err) console.log(err);
else console.log(decoded);
});
token: โทเคนที่เราต้องการตรวจสอบ
callback: ตรงนี้เราจะได้รับค่า err กับ decoded โดยค่า err จะเป็นตัวที่บอกว่า token ใช้งานไม่ได้เพราะอะไร และค่า decoded จะเป็นชุดข้อมูลที่เราใส่ไว้ตอนสร้าง token ครับ
ตัวอย่างค่า err
TokenExpiredError: jwt expired
JsonWebTokenError: invalid signature
ตัวอย่างค่า decoded
{
username: 'somkiat001',
name: 'Somkiat',
email: '[email protected]',
iat: 1646760330,
exp: 1646760340
}
iat: token นี้ถูกสร้างไว้ตอนไหน
exp: token จะหมดอายุตอนไหน
หน้าตาของ Code ทั้งหมด
const jwt = require("jsonwebtoken");
const secret = "12345";
const token = jwt.sign({
username: "somkiat001",
name: "Somkiat",
email:"[email protected]"
}, secret, {expiresIn: 5});
jwt.verify(token, secret, function(err,decoded) {
if (err) console.log(err);
else console.log(decoded);
});
สรุป
การใช้ JWT ก็จะมีอยู่ 2 ฟังชันก์หลักๆ นั่นคือ jwt.sign ที่ใช้สร้าง token และฟังชันก์ jwt.verify ที่ใช้ตรวจสอบว่า token
ขอบคุณครับ