Authentication ใน Koa.js

การดำเนินการ Authentication (การตรวจสอบสิทธิ์และการรับรองตัวตน) ใน Koa.js มีหลายวิธี แต่วิธีที่แพร่หลายที่สุดคือใช้ middleware และไลบรารีที่ช่วยในการตรวจสอบและการรับรองตัวตนของผู้ใช้. นี่คือวิธีการสร้างระบบ Authentication ใน Koa.js โดยใช้ koa-passport และ passport-local:

  1. ติดตั้งแพ็กเกจ koa-passport และ passport-local:

    ใช้คำสั่ง npm เพื่อติดตั้ง koa-passport และ passport-local:

    1
    npm install koa-passport passport-local

    หรือถ้าคุณใช้ Yarn:

    1
    yarn add koa-passport passport-local
  2. กำหนด middleware koa-passport ในแอปพลิเคชัน Koa.js:

    ในแอปพลิเคชัน Koa.js ของคุณ, กำหนด middleware koa-passport เพื่อรับรองตัวตนผู้ใช้:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    const Koa = require('koa');
    const passport = require('koa-passport');
    const LocalStrategy = require('passport-local').Strategy;

    const app = new Koa();

    // กำหนดฟังก์ชันในการตรวจสอบตัวตน
    passport.use(new LocalStrategy(
    async (username, password, done) => {
    // ตรวจสอบข้อมูลผู้ใช้ในฐานข้อมูล (สมมติ)
    if (username === 'john' && password === 'password') {
    // ส่งข้อมูลผู้ใช้ไปยังฟังก์ชัน done() หากต้องการรับรองตัวตน
    return done(null, { id: 1, username: 'john' });
    } else {
    // ส่งข้อความผิดพลาดในกรณีที่ตรวจสอบล้มเหลว
    return done(null, false, { message: 'ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง' });
    }
    }
    ));

    // กำหนดการเริ่ม session
    app.keys = ['your-secret-key'];
    app.use(passport.initialize());
    app.use(passport.session());

    // ตัวอย่างการลงทะเบียน route สำหรับเข้าสู่ระบบ
    app.use(async (ctx, next) => {
    if (ctx.isAuthenticated()) {
    ctx.body = `ยินดีต้อนรับ, ${ctx.state.user.username}!`;
    } else {
    ctx.body = 'โปรดเข้าสู่ระบบ';
    }
    });

    // ตัวอย่าง route สำหรับการเข้าสู่ระบบ
    app.use(async (ctx, next) => {
    await ctx.login({ id: 1, username: 'john' });
    ctx.redirect('/');
    });

    app.listen(3000, () => {
    console.log('Server is running on port 3000');
    });
  3. เรียกใช้แอปพลิเคชัน:

    เมื่อคุณรันแอปพลิเคชัน Koa.js และเข้าที่ http://localhost:3000, คุณจะเห็นข้อความ “โปรดเข้าสู่ระบบ.” เมื่อคุณเข้าสู่ระบบโดยใช้ชื่อผู้ใช้ “john” และรหัสผ่าน “password” ผ่าน route สำหรับการเข้าสู่ระบบ, คุณจะถูกเรียกไปยัง route ที่แสดงข้อความ “ยินดีต้อนรับ, john!”

การสร้างระบบ Authentication ใน Koa.js โดยใช้ koa-passport และ passport-local ช่วยให้คุณสามารถรับรองตัวตนของผู้ใช้ได้อย่างสะดวก และคุณสามารถปรับแต่งกฎการตรวจสอบตัวตนและการจัดการผู้ใช้ตามความต้องการของโปรเจกต์ของคุณ.