Hướng dẫn cài đặt và sử dụng thư viện trek-captcha

Bài viết này cung cấp hướng dẫn chi tiết để cài đặt và sử dụng thư viện trek-captcha trên môi trường phát triển cục bộ.

1. Yêu cầu hệ thống

  • Môi trường Node.js đã được cài đặt.
  • Trình quản lý gói npm.

2. Các bước cài đặt

  1. Tạo thư mục dự án mới:
    
    mkdir captcha-demo
    cd captcha-demo
          
  2. Khởi tạo dự án npm:
    
    npm init -y
          
  3. Cài đặt thư viện trek-captcha:
    
    npm install trek-captcha --save
          

3. Tạo tệp tin ví dụ

Tạo một tệp tin có tên index.js với nội dung sau:


'use strict'

const fs = require('fs');
const generateCaptcha = require('trek-captcha');

async function createAndSaveCaptcha() {
  // Tạo mã xác thực và dữ liệu ảnh
  const { text, imageBuffer } = await generateCaptcha({
    length: 5, // Độ dài mã xác thực (mặc định là 5)
    stylePreset: -1 // Kiểu dáng ảnh (-1 là ngẫu nhiên)
  });

  // In mã xác thực ra console
  console.log('Mã xác thực:', text);

  // Lưu ảnh xác thực dưới dạng tệp GIF
  fs.createWriteStream('generated_captcha.gif')
    .on('finish', () => console.log('Đã lưu ảnh xác thực dưới dạng generated_captcha.gif'))
    .end(imageBuffer);
}

createAndSaveCaptcha().catch(error => {
  console.error('Đã xảy ra lỗi:', error);
});
  

4. Chạy ứng dụng

Thực thi tệp tin đã tạo:


node index.js
  

Sau khi chạy, bạn sẽ thấy:

  • Mã xác thực được hiển thị trên bảng điều khiển.
  • Một tệp ảnh generated_captcha.gif được tạo trong thư mục hiện tại.

5. Tích hợp vào ứng dụng Web (Ví dụ với Express)

Để sử dụng trek-captcha trong một ứng dụng web, bạn có thể tham khảo ví dụ sau với Express.js:

  1. Cài đặt Express.js:
    
    npm install express
          
  2. Tạo tệp tin web_server.js:
    
    const express = require('express');
    const captcha = require('trek-captcha');
    const cookieParser = require('cookie-parser'); // Cần cài đặt cookie-parser
    
    const app = express();
    app.use(cookieParser()); // Sử dụng cookie-parser middleware
    
    // Lưu trữ mã xác thực theo ID phiên
    const sessionStore = new Map();
    
    // Trang chính hiển thị form nhập mã
    app.get('/', (req, res) => {
      res.send(`
        <h1>Ví dụ Mã Xác Thực</h1>
        <img src="/display-captcha" alt="Captcha Image" />
    <form action="/check-code" method="GET"> <input type="text" name="userCode" placeholder="Nhập mã xác thực" /> <button type="submit">Kiểm tra</button> </form> `); }); // Endpoint để hiển thị ảnh mã xác thực app.get('/display-captcha', async (req, res) => { const { token, buffer } = await captcha(); // Tạo ID phiên duy nhất và lưu mã xác thực const sessionId = Date.now().toString(); sessionStore.set(sessionId, token); // Gửi ID phiên qua cookie cho client res.cookie('captchaSessionId', sessionId, { httpOnly: true }); // Thiết lập header và gửi ảnh res.setHeader('Content-Type', 'image/gif'); res.send(buffer); }); // Endpoint để kiểm tra mã xác thực app.get('/check-code', (req, res) => { const receivedSessionId = req.cookies.captchaSessionId; const submittedCode = req.query.userCode; const correctCode = sessionStore.get(receivedSessionId); if (submittedCode && correctCode && submittedCode.toLowerCase() === correctCode.toLowerCase()) { res.send('Xác thực thành công!'); } else { res.send('Xác thực thất bại. Vui lòng thử lại.'); } // Xóa mã xác thực đã sử dụng khỏi bộ nhớ if (receivedSessionId) { sessionStore.delete(receivedSessionId); } }); const PORT = 3000; app.listen(PORT, () => { console.log(`Máy chủ đang chạy tại http://localhost:${PORT}`); });
  3. Chạy máy chủ Web:
    
    node web_server.js
          
  4. Truy cập trang kiểm tra: Mở trình duyệt và truy cập địa chỉ http://localhost:3000.

6. Lưu ý

  • Tùy chọn cấu hình: Bạn có thể tùy chỉnh các tham số như độ dài mã, kiểu dáng ảnh khi gọi hàm captcha().
  • Giá trị trả về: Hàm captcha() trả về một đối tượng chứa token (chuỗi mã xác thực) và buffer (dữ liệu nhị phân của ảnh).
  • Định dạng ảnh: Thư viện trek-captcha tạo ảnh mã xác thực ở định dạng GIF.
  • Ưu điểm: Thư viện được viết hoàn toàn bằng JavaScript, không yêu cầu cài đặt các thư viện phụ trợ như ImageMagick hay Canvas, phù hợp với môi trường Node.js.

Thẻ: Node.js trek-captcha CAPTCHA Backend Web Security

Đăng vào ngày 19 tháng 10 lúc 23:31