POST/api/auth/login

Đăng nhập người dùng và cấp một JWT phiên cũng như một Refresh-Token. Đây là cách duy nhất để có được token truy cập hợp lệ cho Dashboard — không có hệ thống khóa Developer-API riêng biệt.

Xác thực & bảo mật

Không cần xác thực

Chặn brute-force tăng dần theo email/tên đăng nhập (authGuard) -- 10 lần thử sai trong 5 phút sẽ làm tăng độ trễ, từ 30 lần trở lên sẽ khóa tài khoản.

Lũy đẳng (idempotent): Không

Tham số

identifier(body, string, bắt buộc)— Địa chỉ email hoặc tên đăng nhập
password(body, string, bắt buộc)— Mật khẩu

Request mẫu

{"identifier":"user@example.com","password":"MatKhauCuaBan"}

Response mẫu

{"ok":true,"token":"<JWT, hiệu lực 12h>","refreshToken":"<Refresh-Token, hiệu lực 7 ngày, chỉ dùng một lần>","user":{"id":"...","tenant_id":"...","email":"user@example.com","role":"EMPLOYEE","roles":[],"permissions":[],"isMasterAdmin":false}}

Mã lỗi

401 INVALID_CREDENTIALS — Địa chỉ email/tên đăng nhập hoặc mật khẩu không chính xác.
429 RATE_LIMIT_EXCEEDED — Quá nhiều lần thử thất bại cho định danh này hoặc địa chỉ IP.

Bằng chứng kiểm thử trực tiếp

Thành công (200, JWT thật + Refresh-Token) và trường hợp lỗi (401 với mật khẩu sai) đã được xác minh trực tiếp trên bộ thử nghiệm bị cô lập.

← Xác thực