Bỏ qua, đến nội dung

Câu hỏi thường gặp (FAQ) — Verification ​

Cấu hình ​

Email gửi OTP vào thư rác (spam)? ​

Giải pháp:

  • Cấu hình SPF, DKIM, DMARC cho domain gửi
  • Sử dụng dịch vụ email chuyên nghiệp (SendGrid, Amazon SES) thay vì SMTP cá nhân
  • Kiểm tra nội dung email không chứa từ khóa spam
  • Đảm bảo domain gửi có reputation tốt

SMS provider nào được hỗ trợ sẵn? ​

Plugin đăng ký sẵn 2 provider:

ProviderTypeMô tả
Aliyun SMSaliyun-smsSMS qua Alibaba Cloud — phổ biến ở châu Á
Tencent SMStencent-smsSMS qua Tencent Cloud

Để thêm provider khác (Twilio, Vonage...), đăng ký qua smsOTPProviderManager.registerProvider().

Có thể dùng nhiều provider cùng lúc không? ​

Có. Tạo nhiều verifier, mỗi cái dùng provider khác nhau. Khi cần xác minh, chọn verifier phù hợp.

Rate limiting hoạt động thế nào? ​

Plugin sử dụng Counter từ @digiforce-nc/cache:

  • Counter theo dõi số lần gửi SMS theo prefix sms-otp:attempts
  • Kết hợp với lockManager để an toàn khi nhiều instance cùng chạy
  • Reset khi cache expire hoặc server restart (nếu dùng in-memory)

Cảnh báo

Nếu dùng in-memory cache, restart server sẽ reset counter — user có thể gửi SMS vượt giới hạn. Khuyến nghị dùng Redis cho production.

Sử dụng ​

Người dùng không nhận được mã OTP? ​

Kiểm tra theo thứ tự:

  1. Provider đã cấu hình đúng? Kiểm tra credentials (access key, secret)
  2. Số điện thoại đúng format? Cần đúng mã quốc gia (ví dụ: +84912345678)
  3. Template SMS đã duyệt? Với Aliyun/Tencent, template SMS cần được duyệt trước khi gửi
  4. Rate limit? User có thể đã gửi quá nhiều lần — chờ cooldown
  5. Log server: Kiểm tra log để xem lỗi từ provider

Mã OTP hết hạn quá nhanh? ​

Tùy chỉnh thời gian hết hạn trong cấu hình verifier hoặc SMS OTP provider. Mặc định thường là 5 phút.

Bị khóa vì nhập sai quá nhiều lần? ​

Chờ hết thời gian cooldown rồi thử lại. Admin có thể xóa counter trong cache hoặc database để reset.

Kỹ thuật ​

Plugin nào phụ thuộc vào plugin-verification? ​

PluginCách sử dụng
plugin-two-factor-authenticationĐăng ký scene '2fa', dùng verifiers cho xác thực hai yếu tố
plugin-auth-smsĐăng ký scene 'auth-sms', xác thực đăng nhập bằng SMS

VerificationManager middleware làm gì? ​

Middleware chặn các action đã đăng ký trong scenes. Khi action cần xác minh:

  1. Middleware kiểm tra request có verification token hợp lệ không
  2. Nếu không → trả về yêu cầu xác minh với danh sách verifiers khả dụng
  3. Nếu có → cho phép tiếp tục

bindingRequired nghĩa là gì? ​

Khi bindingRequired: true trên verification type:

  • User phải liên kết (bind) verifier trước khi có thể xác minh
  • Ví dụ: SMS OTP yêu cầu user liên kết số điện thoại trước

Khi bindingRequired: false:

  • User không cần liên kết trước — cung cấp thông tin ngay khi cần xác minh
  • Ví dụ: Email OTP gửi mã đến email đã biết

publicCreate có an toàn không? ​

smsOTP:publicCreate cho phép gửi SMS không cần đăng nhập — cần thiết cho luồng đăng ký và quên mật khẩu. Để bảo mật:

  • Dùng rate limiting (counter) để giới hạn số lần gửi
  • Thêm CAPTCHA phía client trước khi gọi
  • Giám sát log để phát hiện abuse