Cần cài đặt giúp?
Đội GP247 cài đặt và cấu hình trên server của bạn — giá cố định sau khi báo giá.
🌐 Ngôn ngữ: 🇻🇳 Tiếng Việt (hiện tại) · 🇬🇧 English · 🇯🇵 日本語
Plugin MFA (Multi-Factor Authentication) cho GP247
Tổng quan
Plugin MFA cung cấp xác thực 2 lớp (Two-Factor Authentication) cho hệ thống GP247, tăng cường bảo mật tài khoản người dùng. Plugin hỗ trợ đa guards (customer, admin, vendor) cho phép linh hoạt trong việc quản lý xác thực người dùng.
Minh họa giao diện
Tính năng
- ✅ Xác thực 2 lớp sử dụng TOTP (Time-based One-Time Password)
- ✅ Hỗ trợ nhiều guards: customer, admin, vendor (khi có plugin MultiVendor)
- ✅ Mã QR dễ dàng quét bằng ứng dụng xác thực
- ✅ Mã khôi phục (Recovery Codes) khi mất thiết bị
- ✅ Tin tưởng thiết bị: trên máy của mình, không phải nhập mã mỗi lần đăng nhập (mật khẩu vẫn bắt buộc) — từ 2.4.0
- ✅ Chặn dò mã: tối đa 5 lần nhập sai trong 15 phút, mã đã dùng không dùng lại được — từ 2.4.0
- ✅ Quản lý MFA từ Admin panel
- ✅ Thống kê tỷ lệ sử dụng MFA theo guard
- ✅ Có thể bắt buộc MFA cho từng guard
- ✅ Áp cả cho đăng nhập REST API v2 của khách và quản trị (từ 2.3.0)
- ✅ Giao diện thân thiện và responsive
- ✅ Đa ngôn ngữ (Tiếng Việt, Tiếng Anh)
Yêu cầu hệ thống
- gp247/core >= 3.5.1 (từ MFA 2.4.0)
- Laravel 13.x
- PHP >= 8.3
- Các packages:
- pragmarx/google2fa: ^8.0 hoặc ^9.0
- bacon/bacon-qr-code: ^2.0 hoặc ^3.0
Cài đặt
Bước 1: Cài đặt các package phụ thuộc
Thêm các packages vào composer.json của project:
composer require pragmarx/google2fa
composer require bacon/bacon-qr-code
Lưu ý: Chạy lệnh này ở thư mục gốc của project GP247, không phải trong thư mục plugin.
Bước 2: Cài đặt plugin
Có 4 phương pháp cài đặt plugin:
Phương pháp 1: Cài đặt từ thư viện trực tuyến
- Truy cập "Extensions" trong admin dashboard
- Chọn "Plugins"
- Chọn tab "Install from Library"
- Tìm plugin "MFA" và click "Install"
- Click "Enable" để kích hoạt plugin
Phương pháp 2: Import file zip
- Truy cập Admin Panel > Extensions > Plugins
- Chọn tab "Import file"
- Chọn file zip của plugin MFA
- Hoàn tất quá trình import
- Click "Enable" để kích hoạt plugin
Phương pháp 3: Cài đặt thủ công
Trong trường hợp gặp khó khăn khi import file zip (lỗi upload, vấn đề về file tạm thời, v.v.):
-
Giải nén và copy thư mục source code vào thư mục tương ứng:
app/GP247/Plugins/MFA -
Copy thư mục
MFA/publicvào đường dẫn public tương ứng:public/GP247/Plugins/MFA -
Truy cập Admin Panel > Extensions > Plugins
-
Trong tab "Local storage" mặc định, tìm "MFA" và click "Install"
-
Click "Enable" để kích hoạt plugin
Phương pháp 4: Cài bằng dòng lệnh (CLI, gp247 3.x)
Từ gp247 3.x, bạn có thể tải MFA từ thư viện GP247 và cài ngay bằng dòng lệnh mà không cần mở admin. Bắt buộc làm Bước 1 trước (composer require pragmarx/google2fa bacon/bacon-qr-code), nếu không lệnh sẽ dừng vì thiếu gói. Mở Terminal tại thư mục gốc website rồi chạy:
# 1) Chỉ làm 1 lần cho mỗi website: đăng ký API License (miễn phí) để kết nối thư viện GP247
php artisan gp247:ext-register-license
# 2) Tải plugin từ thư viện và cài
php artisan gp247:ext-install --type=plugin --key=MFA
- Trước bước 1, kiểm tra
APP_URLtrong.envlà domain thật của website (không đểhttp://localhost), vì license được gắn với domain này. - Cài xong, plugin được bật sẵn và cache tự làm mới, bạn không cần nhấn Install/Enable trong admin nữa.
- Lệnh tự kiểm tra điều kiện khai báo trong
gp247.json(phiên bản core, gói composer, plugin phụ thuộc). Nếu thiếu, lệnh dừng lại và báo rõ thiếu gì (ví dụ chưa càipragmarx/google2fahoặcbacon/bacon-qr-code). - Nếu thư mục
app/GP247/Plugins/MFAđã có sẵn trên máy (chép thủ công hoặc có sẵn theo bộ cài), lệnh sẽ cài tại chỗ, không tải lại. - Nếu plugin đã được cài, lệnh sẽ từ chối. Để lên bản mới, chạy
php artisan gp247:ext-update --type=plugin --key=MFA. - Thêm
--jsonvào cuối lệnh để nhận kết quả dạng máy đọc được (dùng cho script/CI). - Các bước cấu hình sau khi cài bên dưới (Bước 3) vẫn giữ nguyên.
- Chi tiết: Hướng dẫn cài đặt Plugin & Template · Tra cứu lệnh.
Tham khảo: Hướng dẫn cài đặt Extension
Bước 3: Cấu hình
Sau khi cài đặt thành công, plugin MFA sẽ xuất hiện trong menu: Admin Panel > Cấu hình hệ thống > Bảo mật > MFA
Cấu hình trên màn quản trị
Mở Admin Panel > Bảo mật > MFA và chỉnh từng guard ngay trên màn hình. Giá trị được lưu trong cơ sở dữ liệu nên không bị mất khi cập nhật plugin. File app/GP247/Plugins/MFA/config.php chỉ chứa giá trị mặc định và bị thay khi cập nhật.
Mặc định: Plugin chỉ được kích hoạt cho guard admin. Guard vendor chỉ có tác dụng khi site cài plugin MultiVendor.
Các tham số cấu hình cho mỗi guard:
- enabled:
1= bật,0= tắt MFA cho guard - forced:
1= bắt buộc,0= tùy chọn (người dùng có thể bật/tắt MFA) - model: Model class của user (chỉ trong
config.php) - qr_code_size: Kích thước mã QR (50-1000px)
- recovery_codes_count: Số lượng mã khôi phục (1-50)
- window: Cửa sổ thời gian cho phép (0-10, khuyến nghị 1)
- trust_device_days: Số ngày một thiết bị được tin tưởng (0-365, mặc định 30;
0= tắt tuỳ chọn "Tin tưởng thiết bị")
Ví dụ cấu hình:
'guards' => [
'customer' => [
'enabled' => 0, // Tắt MFA cho customer
'forced' => 0,
// ... các tham số khác
],
'admin' => [
'enabled' => 1, // Bật MFA cho admin (mặc định)
'forced' => 0, // Không bắt buộc
// ... các tham số khác
],
],
Lưu ý: Sau khi chỉnh sửa file config, cần clear cache:
php artisan config:clear
php artisan cache:clear
Sử dụng
Cho người dùng cuối
Thiết lập MFA
- Truy cập trang quản lý MFA:
/mfa/setup/customer - Quét mã QR bằng ứng dụng xác thực (Google Authenticator, Authy, Microsoft Authenticator, v.v.)
- Nhập mã 6 chữ số từ ứng dụng để xác minh
- Lưu các mã khôi phục ở nơi an toàn
Đăng nhập với MFA
- Đăng nhập bằng username/password như bình thường
- Sau khi đăng nhập thành công, hệ thống sẽ yêu cầu mã MFA
- Nhập mã 6 chữ số từ ứng dụng xác thực
- Hoặc sử dụng mã khôi phục 8 ký tự nếu mất thiết bị
Quản lý MFA
- Xem trạng thái MFA:
/mfa/manage/customer - Xem mã khôi phục:
/mfa/recovery-codes/customer - Tạo lại mã khôi phục: Từ trang quản lý MFA
- Tắt MFA: Từ trang quản lý MFA (yêu cầu xác nhận mật khẩu)
Cho Admin
Xem thống kê
- Truy cập Admin Panel > Extensions > MFA
- Xem tỷ lệ người dùng đã bật MFA theo từng guard
- Xem tổng số người dùng và số người đã bật MFA
Cấu hình guards
- Bật/tắt MFA cho từng guard
- Bắt buộc người dùng phải bật MFA
- Điều chỉnh các thông số kỹ thuật
Reset MFA cho người dùng
- Từ trang quản lý MFA, Admin có thể reset MFA cho bất kỳ người dùng nào
- Người dùng sẽ phải thiết lập MFA lại từ đầu
Luồng Xử Lý MFA
1. Luồng Setup MFA (Lần Đầu)
┌─────────────────────────────────────────────────────────────┐
│ User Login Success │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌────────────────────┐
│ MFA Enabled cho │
│ guard này? │
└────────┬───────────┘
│
┌────────────────┴────────────────┐
│ No │ Yes
▼ ▼
┌───────────────┐ ┌────────────────────┐
│ Allow Access │ │ User đã enroll MFA?│
└───────────────┘ └─────────┬──────────┘
│
┌────────────────┴────────────────┐
│ No │ Yes
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ MFA Forced? │ │ Session verified?│
└────────┬─────────┘ └────────┬─────────┘
│ │
┌─────────────┴──────────┐ ┌─────────┴─────────┐
│ No │ Yes │ │ No │ Yes │
▼ ▼ │ ▼ ▼ │
Allow Access Redirect │ Redirect Allow Access │
to Setup │ to Verify │
│ │ │ │
▼ │ ▼ │
┌─────────────┐ │ ┌─────────────────┐ │
│ Show QR Code│ │ │ Enter 6-digit │ │
│ & Secret │ │ │ code or │ │
└──────┬──────┘ │ │ recovery code │ │
│ │ └────────┬────────┘ │
▼ │ │ │
┌─────────────┐ │ ▼ │
│ Verify Code │ │ ┌─────────────────┐ │
└──────┬──────┘ │ │ Code Valid? │ │
│ │ └────────┬────────┘ │
▼ │ │ │
┌─────────────────┐ │ ┌────────┴────────┐ │
│ Generate │ │ │ No │ Yes │ │
│ Recovery Codes │ │ ▼ ▼ │ │
└────────┬────────┘ │ Error Set │ │
│ │ Session │ │
▼ │ Verified │ │
┌─────────────────┐ │ │ │ │
│ Show & Save │ │ ▼ │ │
│ Recovery Codes │ │ ┌──────────────┐ │ │
└────────┬────────┘ │ │Allow Access │ │ │
│ │ └──────────────┘ │ │
▼ │ │ │
┌─────────────────┐ │ │ │
│ MFA Activated │ │ │ │
└────────┬────────┘ │ │ │
│ │ │ │
└──────────┴──────────────────────┘ │
│ │
└───────────────────────────────┘
2. Luồng Login với MFA (Đã Setup)
┌─────────────────────┐
│ User Login │
│ (Email + Password) │
└──────────┬──────────┘
│
▼
┌──────────────────────┐
│ Credentials Valid? │
└──────────┬───────────┘
│
┌──────┴──────┐
│ No │ Yes │
▼ ▼ │
Error Check │
MFA │
│ │
▼ │
┌─────────────────────┐
│ User enrolled MFA? │
└──────────┬──────────┘
│
┌──────┴──────┐
│ No │ Yes │
▼ ▼ │
Allow Redirect │
Access to MFA │
Verify │
│ │
▼ │
┌────────────────────────────┐
│ MFA Verification Page │
│ │
│ [Enter 6-digit code] │
│ or │
│ [Use recovery code] │
└──────────┬─────────────────┘
│
▼
┌──────────────────────┐
│ Verify Code │
│ (TOTP or Recovery) │
└──────────┬───────────┘
│
┌──────┴──────────┐
│ Valid │ Invalid │
▼ ▼ │
┌─────────────┐ ┌─────────┐
│ Set Session │ │ Show │
│ Verified │ │ Error │
└──────┬──────┘ └────┬────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────┐
│ Allow Access │ │ Try Again│
└──────────────┘ └──────────┘
3. Luồng Sử Dụng Recovery Code
┌──────────────────────┐
│ User mất điện thoại │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Login Page │
│ Enter credentials │
└──────────┬───────────┘
│
▼
┌──────────────────────────┐
│ MFA Verification Page │
│ │
│ Click "Use recovery code"│
└──────────┬───────────────┘
│
▼
┌──────────────────────────┐
│ Enter 8-char recovery │
│ code (e.g. ABCD1234) │
└──────────┬───────────────┘
│
▼
┌──────────────────────┐
│ Check recovery code │
│ in database │
└──────────┬───────────┘
│
┌──────┴───────┐
│ Valid│Invalid│
▼ ▼ │
┌────────────┐ ┌────────┐
│ Mark code │ │ Error │
│ as used │ └────────┘
└─────┬──────┘ │
│ │
▼ │
┌────────────┐ │
│ Login OK │ │
└─────┬──────┘ │
│ │
▼ │
┌──────────────────┐
│ Redirect to │
│ MFA Setup │
│ (Setup new device)│
└──────────────────┘
4. Middleware Flow
┌──────────────────────────┐
│ Request to protected │
│ route with mfa.verify │
└───────────┬──────────────┘
│
▼
┌───────────────────────────┐
│ Middleware: Check Auth │
└───────────┬───────────────┘
│
┌──────┴──────┐
│ Not │ Auth │
│ Auth │ │
▼ ▼ │
Redirect Check │
to Login MFA │
│ │
▼ │
┌─────────────────────────┐
│ MFA enabled for guard? │
└───────────┬─────────────┘
│
┌──────┴──────┐
│ No │ Yes │
▼ ▼ │
Allow Check │
Access Session │
│ │
▼ │
┌──────────────────────────┐
│ Session verified? │
└───────────┬──────────────┘
│
┌──────┴──────┐
│ Yes │ No │
▼ ▼ │
Allow Check │
Access User │
MFA │
│ │
▼ │
┌──────────────────────────┐
│ User enrolled MFA? │
└───────────┬──────────────┘
│
┌──────┴──────┐
│ No │ Yes │
▼ ▼ │
Check Redirect │
Forced to MFA │
MFA Verify │
│ │
▼ │
┌──────────────┐ │
│ MFA Forced? │ │
└──────┬───────┘ │
│ │
┌────┴────┐ │
│No │Yes │ │
▼ ▼ │ │
Allow Redirect │
Access to Setup │
│ │
└───────────┘
Tin tưởng thiết bị
ℹ️ Có từ: MFA 2.4.0
Khi nhập mã 6 số, người dùng có thể đánh dấu "Tin tưởng thiết bị này trong N ngày". Trong N ngày đó, đăng nhập lại trên đúng trình duyệt ấy chỉ cần username + mật khẩu, không phải mở ứng dụng xác thực. Tin tưởng thiết bị không bao giờ thay cho mật khẩu.
flowchart TD
A[Đăng nhập: username + mật khẩu] -->|sai| X[Dừng ở trang đăng nhập]
A -->|đúng| B{Trình duyệt này đã được<br/>tin tưởng cho tài khoản này<br/>và còn hạn?}
B -- có --> OK[Vào thẳng, không hỏi mã]
B -- không --> C[Nhập mã 6 số]
C --> D{Đánh dấu<br/>Tin tưởng thiết bị này?}
D -- có --> E[Ghi nhớ trình duyệt N ngày] --> OK
D -- không --> OK
- Chỉ áp cho đúng tài khoản và đúng loại tài khoản (khách / quản trị / vendor) đã tin tưởng. Tài khoản khác trên cùng máy vẫn phải nhập mã.
- Mặc định không đánh dấu. Không nên đánh dấu trên máy dùng chung hay máy công cộng.
- Màn đăng nhập bằng mã khôi phục không có lựa chọn này.
- Người dùng xem và gỡ từng thiết bị tin tưởng (hoặc gỡ tất cả) ở trang quản lý MFA (
/mfa/manage/<guard>). - Mọi thiết bị tin tưởng của một tài khoản tự bị gỡ khi: đổi mật khẩu (bằng bất kỳ cách nào), tắt MFA, quản trị viên reset MFA, hoặc đăng nhập bằng mã khôi phục. Đăng xuất không gỡ thiết bị tin tưởng.
- Chủ site chỉnh số ngày cho từng guard ở Admin Panel > Bảo mật > MFA (ô "Tin tưởng thiết bị (ngày)"). Đặt
0để tắt; mọi thiết bị đang được tin tưởng của guard đó hết tác dụng ngay. - Không áp cho đăng nhập REST API v2 (app dùng refresh token).
Bảo mật cookie: thông tin tin tưởng nằm trong cookie mã hoá, HttpOnly, đi theo cấu hình cookie phiên của site
(SESSION_DOMAIN, SESSION_SECURE_COOKIE, SESSION_SAME_SITE). Site chạy HTTPS nên đặt SESSION_SECURE_COOKIE=true. Cơ sở dữ liệu
chỉ lưu bản băm của mã tin tưởng.
Giới hạn nhập mã
ℹ️ Có từ: MFA 2.4.0
Màn nhập mã trên website cho tối đa 5 lần sai trong 15 phút cho mỗi tài khoản (mã 6 số và mã khôi phục tính chung). Quá giới hạn, màn hình không kiểm mã nữa (kể cả mã đúng) và báo số phút phải chờ. Một mã 6 số đã được chấp nhận — trên website hoặc qua API — không dùng lại được trong khung thời gian của nó. Bộ đếm dùng cache mặc định của Laravel, chạy được trên shared hosting.
MFA cho ứng dụng dùng REST API (v2)
ℹ️ Có từ: MFA 2.3.0 · cần gp247/core 3.5.1 (gp247/shop 3.4.0 cho API khách)
Khi plugin đang bật, người dùng đã kích hoạt MFA (guard customer hoặc admin đang bật) cũng phải nhập mã khi đăng nhập
qua REST API v2 — app di động hay app quản trị không còn là đường vòng né MFA. Plugin tự đăng ký với core, không cần cấu hình thêm.
sequenceDiagram
participant App
participant API as GP247 API v2
App->>API: POST login (email/username + mật khẩu)
API-->>App: 401 challenge_required + ticket (method: totp)
App->>API: POST login/challenge (ticket + code 6 số hoặc recovery_code)
API-->>App: 200 access_token (+ refresh_token nếu with_refresh)
Trường gửi lên login/challenge |
Ý nghĩa |
|---|---|
ticket |
Vé nhận được ở bước login (dùng một lần, hết hạn sau 5 phút) |
code |
Mã 6 số trong ứng dụng xác thực |
recovery_code |
Thay cho code khi mất thiết bị: một mã khôi phục 8 ký tự (dùng xong là mất) |
- Một mã 6 số đã dùng thành công qua API (hoặc trên website) không dùng lại được trong khung thời gian của nó.
- Guard đặt bắt buộc MFA mà tài khoản chưa kích hoạt: API trả
challenge_requiredvớimethod: "setup_required"và không thể hoàn tất — người dùng vào website bật MFA trước, sau đó đăng nhập app như trên. - Tài khoản không bật MFA, hoặc guard đang tắt: đăng nhập API như bình thường.
- API v1 không có bước nhập mã: tài khoản đã bật MFA đăng nhập v1 nhận
401 challenge_required— hãy dùng v2.
Chi tiết phía API: Giới thiệu API GP247 — mục 10.4.
Tích hợp vào code
Middleware
Sử dụng middleware mfa.verify để bảo vệ các routes:
// Trong routes/web.php
Route::group(['middleware' => ['auth:customer', 'mfa.verify:customer']], function () {
Route::get('/dashboard', 'DashboardController@index');
Route::get('/profile', 'ProfileController@index');
});
// Cho admin
Route::group(['middleware' => ['auth:admin', 'mfa.verify:admin']], function () {
Route::get('/admin/dashboard', 'AdminController@index');
});
Helper functions
// Kiểm tra MFA có được bật cho guard không (cấu hình hiệu lực: mặc định + giá trị lưu ở màn quản trị)
if (mfa_get_guard_config('customer')['enabled'] ?? false) {
// MFA is enabled
}
// Kiểm tra user đã đăng ký MFA chưa
if (mfa_is_user_enrolled($user, 'customer')) {
// User has enrolled MFA
}
// Kiểm tra tài khoản đang đăng nhập của guard đã qua MFA trong phiên này chưa (từ 2.4.0: theo guard + tài khoản)
if (mfa_is_verified('customer', $user)) {
// Session is verified for this customer
}
// Đánh dấu tài khoản đã qua MFA trong phiên (cho guard đó)
mfa_set_verified('customer', $user);
// Xoá dấu của một guard (bỏ tham số = mọi guard)
mfa_clear_verified('customer');
// Tạo link đến các trang MFA
route('mfa.setup.show', 'customer') // /mfa/setup/customer
route('mfa.manage', 'customer') // /mfa/manage/customer
route('mfa.recovery_codes', 'customer') // /mfa/recovery-codes/customer
route('mfa.verify.show', 'customer') // /mfa/verify/customer
Cấu trúc thư mục
app/GP247/Plugins/MFA/
├── Admin/Livewire/
│ ├── MfaDashboard.php # Màn thống kê + cấu hình guard
│ └── MfaUsers.php # Màn danh sách người dùng / reset MFA
├── Api/
│ └── MfaLoginChallenge.php # Bước nhập mã cho REST API v2
├── Controllers/
│ └── MFAController.php # Controller chính cho MFA
├── Helpers/
│ └── TwoFactorHelper.php # Helper cho Google 2FA
├── Lang/
│ ├── en/ · vi/ · ja/
│ │ └── lang.php # Ngôn ngữ
├── Middleware/
│ └── TwoFactorAuthentication.php # Middleware xác thực MFA
├── Models/
│ ├── ExtensionModel.php # Model cài đặt/gỡ bỏ
│ ├── TrustedDevice.php # Thiết bị tin tưởng
│ └── TwoFactorAuth.php # Model lưu trữ MFA
├── Services/
│ └── TrustedDeviceService.php # Cookie + kiểm tra thiết bị tin tưởng
├── Views/
│ ├── Admin/ # View admin (Livewire)
│ └── Frontend/
│ ├── setup.blade.php # View thiết lập MFA
│ ├── verify.blade.php # View xác thực MFA
│ ├── recovery_codes.blade.php # View mã khôi phục
│ └── manage.blade.php # View quản lý MFA
├── AppConfig.php # Cấu hình plugin
├── config.php # File cấu hình
├── function.php # Helper functions
├── gp247.json # Metadata plugin
├── Provider.php # Service provider
├── Route.php # Routes
└── readme_vi.md # Tài liệu này
Bảo mật
Mã hóa
- Secret key được mã hóa trong database sử dụng Laravel Encryption
- Recovery codes được mã hóa trong database
- Tất cả dữ liệu nhạy cảm đều được bảo vệ
Best Practices
- Bắt buộc MFA cho Admin: Nên bật "Forced" cho guard admin
- Giáo dục người dùng: Hướng dẫn người dùng lưu mã khôi phục an toàn
- Kiểm tra định kỳ: Theo dõi tỷ lệ sử dụng MFA
- Backup: Đảm bảo database được backup thường xuyên
- HTTPS: Bắt buộc sử dụng HTTPS cho tất cả các trang MFA
Ứng dụng xác thực được hỗ trợ
Plugin hỗ trợ tất cả các ứng dụng xác thực TOTP:
- Google Authenticator (iOS, Android)
- Microsoft Authenticator (iOS, Android)
- Authy (iOS, Android, Desktop)
- 1Password (iOS, Android, Desktop)
- LastPass Authenticator
- Duo Mobile
- FreeOTP
- Và nhiều ứng dụng TOTP khác
Xử lý sự cố
Người dùng mất thiết bị xác thực
- Người dùng sử dụng mã khôi phục để đăng nhập
- Sau khi đăng nhập, thiết lập MFA lại với thiết bị mới
- Lưu mã khôi phục mới
Mã xác thực không hoạt động
- Kiểm tra thời gian trên thiết bị có chính xác không
- Tăng giá trị "Window" trong cấu hình (khuyến nghị 1-2)
- Đảm bảo đã quét đúng mã QR
Admin muốn reset MFA cho người dùng
- Truy cập Admin Panel > Extensions > MFA
- Tìm người dùng trong danh sách
- Click "Reset MFA"
- Người dùng sẽ phải thiết lập MFA lại
Hỗ trợ
- Website: https://GP247.net
- Email: support@gp247.net
- Documentation: https://gp247.net/vi/product/plugin-mfa.html
Giấy phép
MIT License
Tác giả
GP247 Team
Changelog
Version 2.4.0
- Tin tưởng thiết bị: đánh dấu "Tin tưởng thiết bị này" khi nhập mã để lần sau trên trình duyệt đó chỉ cần mật khẩu (mặc định 30 ngày, chỉnh 0–365 theo guard). Tự gỡ khi đổi mật khẩu, tắt MFA, quản trị viên reset hoặc dùng mã khôi phục; người dùng tự gỡ ở trang quản lý MFA
- Tăng cường bảo mật: trạng thái "đã nhập mã" trong phiên gắn với đúng tài khoản; màn nhập mã trên website giới hạn 5 lần sai / 15 phút và không nhận lại mã đã dùng. Nên cập nhật
- Guard
vendordùng đúng model của plugin MultiVendor; bỏ guard mẫupmo_partnervà khoásession_lifetimekhông còn dùng - Yêu cầu gp247/core 3.5.1 trở lên
Cần làm khi cập nhật
- Sao lưu cơ sở dữ liệu (bảng
two_factor_auth), rồi cập nhật plugin và áp dụng cập nhật dữ liệu (php artisan gp247:update, hoặc nút "Áp dụng" ở màn Extension) để tạo bảng thiết bị tin tưởng. - Người dùng đang đăng nhập (đã bật MFA) sẽ được hỏi mã một lần sau khi cập nhật — đây là hành vi mong đợi.
- Site HTTPS nên đặt
SESSION_SECURE_COOKIE=true.
Version 2.3.0
- MFA cho đăng nhập REST API v2 (khách + quản trị) qua bước
login/challengecủa gp247/core: mã TOTP hoặc mã khôi phục, chống dùng lại mã, guard bắt buộc chặn API khi chưa kích hoạt
Version 1.0
- Initial release
- Support for Customer, Admin, Vendor, PMO guards
- TOTP authentication with Google Authenticator
- Recovery codes system
- Admin management panel
- Multi-language support (Vietnamese, English)
Đánh giá sản phẩm
Vui lòng đăng nhập để viết đánh giá.
Đăng nhậpChưa có đánh giá nào. Hãy là người đầu tiên đánh giá sản phẩm này.