1. Phân biệt Authentication và Authorization Rất nhiều lập trình viên mới hay nhầm lẫn hai khái niệm này: Authentication (Xác thực): Trả lời câu hỏi "Bạn là ai?" . (Ví dụ: Hành động bạn nhập Username và Password để đăng nhập vào hệ thống). Authorization (Phân quyền/Ủy quyền): Trả lời câu hỏi "Bạn được phép làm gì?" . (Ví dụ: Sau khi đăng nhập thành công, hệ thống kiểm tra xem bạn là Admin hay User thường, bạn có quyền xóa bài viết hay chỉ được xem). 2. Giao thức HTTP và vấn đề "Stateless" Giao thức HTTP bản chất là Stateless (Phi trạng thái) . Nghĩa là server xử lý xong một request là sẽ "quên" luôn client đó là ai. Nếu không có cơ chế lưu trữ lại trạng thái, mỗi lần bạn bấm sang một trang mới trên website, hệ thống sẽ lại bắt bạn đăng nhập lại. Để giải quyết vấn đề này, người ta sinh ra Cookie , Session và Token . 3. Cơ chế Cookie và Session Cookie: Là một đoạn dữ liệu nhỏ (vài KB) được Server yêu cầu Client (Trình duyệt) lưu trữ lại ở dưới máy của người dùng.…