Mini project: ghép luồng auth hoàn chỉnh cho sản phẩm
Bài trước bạn đã cầm checklist rà code auth do AI sinh ra: secret hardcode, bỏ qua exp, tin role client gửi lên. Hôm nay đổi vai: không rà nữa mà ghép đăng ký, đăng nhập, refresh token, phân quyền và Google login thành một luồng chạy được, rồi tự tay phá nó.
Câu hỏi dán lên màn hình suốt buổi: token này ai giữ, sống bao lâu, bị lộ thì sao?
Sản phẩm bạn ghép hôm nay
App "Ghi chú" mini, stack nào cũng được (Express + Postgres là đủ). Ba nhóm người dùng: khách chưa đăng nhập, user đã đăng nhập (tạo và xóa note của mình), admin (xem danh sách user, xóa note bất kỳ).
flowchart TD
PW["🔑<br/>Đăng nhập mật khẩu"] --> Issue["🎫<br/>Cấp cặp token"]
GG["🔴<br/>Đăng nhập Google"] --> Verify["✅<br/>Xác minh id_token"]
Verify --> Issue
Issue --> AT["⏱️<br/>Access token 15 phút<br/>giữ trong memory"]
Issue --> RT["🍪<br/>Refresh token 7 ngày<br/>cookie httpOnly"]
AT --> API["📓<br/>Gọi /notes và /admin"]
API --> RBAC["🛡️<br/>Middleware RBAC"]
RT --> Refresh["🔄<br/>/auth/refresh rotate"]
Refresh --> Issue
Điểm quan trọng nhất trên hình: hai cách đăng nhập phải hội tụ về cùng một chỗ cấp token. Nếu mật khẩu trả một kiểu token, Google trả một kiểu khác, bạn sẽ có hai bộ bug khác nhau và gấp đôi thời gian debug.
Năm mốc, làm theo thứ tự này
In this lesson
- Nghiệm thu: tự tay bấm và tự tay phá
- Thẻ ôn nhanh cho luồng auth
- Nghiệm thu: luồng của bạn đã đủ chưa
About this course
Part of Xác thực và phân quyền: session, JWT và OAuth — Chọn đúng cách đăng nhập cho sản phẩm, triển khai session hoặc JWT an toàn và biết kiểm tra luồng auth do AI viết.
- Level
- Beginner
- Goal
- Build a project
- Language
- Vietnamese
- Focus
- session và cookie JWT và refresh token hash mật khẩu phân quyền theo vai trò
- Prior knowledge
- Biết viết API cơ bản, Hiểu HTTP request/response
- Practice
- Guided exercises
- Time
- ~3h
- Voice
- một kỹ sư từng debug lỗ hổng auth trong sản phẩm thật, dạy bằng luồng vẽ tay và luôn hỏi 'token này ai giữ, sống bao lâu, bị lộ thì sao'
- Not covered
- OAuth nâng cao và OpenID Connect chi tiết, SSO doanh nghiệp, mật mã học
This lesson is premium content. Sign in and purchase the course to view the full content. Sign in