Skip to content

Server-Side Validation Với Express-Validator

image.png
Dựa trên diagram, validation có 2 tầng:
1. Client-Side Validation (Optional):
UX tốt hơn (feedback ngay lập tức)
Giảm tải server
NHƯNG: Dễ bypass (user tắt JavaScript, dùng Postman…)
2. Server-Side Validation (Required - BẮT BUỘC):
Bảo mật: Không thể bypass
Cuối cùng data vẫn phải qua server
Layer cuối trước khi vào Database
Nguyên tắc: LUÔN validate trên server, client-side chỉ là bonus cho UX!

1. Cài đặt Express-Validator

2. Import và sử dụng trong Routes

Basic Setup

3. Các loại validation phổ biến

String Validation

Password Validation

Number Validation

Length & Content Validation

Date Validation

Boolean & Checkbox

Array Validation

Custom Validation

4. Xử lý Validation Errors trong Controller

5. Ví dụ hoàn chỉnh: User Signup

Routes (routes/auth.js)

Controller (controllers/auth.js)

Frontend Response Handling

6. Best Practices

A. Tách Validation Rules ra file riêng

B. Tạo Error Handler Middleware

C. Sanitization - Làm sạch dữ liệu

D. Rate Limiting cho validation endpoints

E. Consistent Error Format

F. Custom Validator Functions

G. Validation cho File Uploads

Tóm tắt Best Practices

LUÔN validate trên server - client validation chỉ là UX bonus
Tách validation rules ra files riêng để reuse
Sanitize input (trim, escape, normalize) để tránh XSS
Consistent error format - dễ handle ở frontend
Custom validators cho business logic phức tạp
Async validation để check database (unique email, username…)
Rate limiting cho sensitive endpoints (signup, login)
Clear error messages - giúp user biết sửa gì
Validate arrays và nested objects nếu cần
Middleware pattern để reuse validation logic
Express-validator giúp validation trở nên dễ dàng, an toàn và maintainable!
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.