🧩 Mini project: ghép luồng auth hoàn chỉnh cho sản phẩm

By Better Wise

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