Skip to content

Authentication & Onboarding

Tổng hợp toàn bộ luồng truy cập của người dùng: đăng ký bằng email, OTP xác minh, đăng nhập, OAuth, onboarding sau lần vào đầu tiên, và các lưu ý bảo mật/đa ngôn ngữ liên quan.

Email + password

App hỗ trợ đăng ký và đăng nhập nội bộ với flow xác minh email rõ ràng, thay vì coi tài khoản local là “hạng hai” so với social login.

OTP xác minh

Người dùng mới phải xác minh email bằng mã OTP trước khi đi tiếp. Điều này giảm tài khoản rác và giúp luồng mời/invite đáng tin hơn.

Social login + onboarding

Google/GitHub có thể đưa người dùng vào app nhanh hơn, nhưng app vẫn giữ bước onboarding để quyết định người dùng nên vào workspace chính hay hoàn tất thiết lập ban đầu trước.

Luồng đăng ký và xác minh email

Local auth của Data Explorer được thiết kế để có thể đứng độc lập, không phụ thuộc vào OAuth. Người dùng mới đăng ký bằng tên, email, mật khẩu; nếu tài khoản chưa xác minh, UI chuyển ngay sang màn hình OTP thay vì để họ “đăng nhập nửa chừng” rồi mới vấp lỗi ở sâu bên trong.

Đăng ký thành công nhưng chưa vào app ngay

Sau khi đăng ký, app có thể trả trạng thái “unverified” để ép đi qua bước OTP. Đây là hành vi chủ động, không phải lỗi.

Resend OTP là đường lui hợp lệ

Người dùng có thể yêu cầu gửi lại mã mà không phải tạo tài khoản lại từ đầu. Điều này đặc biệt quan trọng trong môi trường email chậm hoặc mail vào spam.

Google, GitHub, và callback flows

Social login không chỉ là nút “đăng nhập cho đẹp”. Nó là một route thật đi qua backend, trao đổi code lấy token, rồi mới hydrate user state về client. Sau khi hoàn tất, app còn kiểm tra onboarding để quyết định route cuối cùng.

Điểm cần nhớ khi cấu hình callback URL

Callback URL phải trỏ về backend thật, không phải frontend route giả. Đây là nơi provider trả code về để backend đổi lấy token và tạo phiên đăng nhập hợp lệ cho app.

Session, onboarding, và trạng thái người dùng

Token chỉ là điểm bắt đầu

Sau khi login thành công, app còn nạp dữ liệu người dùng và trạng thái quan trọng khác như connections để người dùng vào workspace với ngữ cảnh hoàn chỉnh hơn.

Onboarding tách riêng khỏi auth

Đăng nhập thành công không đồng nghĩa người dùng đã sẵn sàng vào trang chính. Nếu `isOnboarded` chưa hoàn tất, app điều hướng sang onboarding để hoàn thành bước thiết lập ban đầu.

Đa ngôn ngữ và email hệ thống

Phần auth không chỉ dịch giao diện. Hệ thống còn có i18n đi xuyên server-side error messages, email xác minh, email reset mật khẩu, cảnh báo bảo mật, và các template thư khác. Điều này rất quan trọng nếu app chạy cho nhiều team có ngôn ngữ mặc định khác nhau.

Biến môi trường auth thường phải kiểm tra

Core auth envs

# Bảo mật cốt lõi

JWT_SECRET=replace-with-a-random-secret-at-least-32-bytes-long

REFRESH_TOKEN_SECRET=another-very-long-secret

ENCRYPTION_KEY=12345678901234567890123456789012

# OAuth providers

GOOGLE_CLIENT_ID=...

GOOGLE_CLIENT_SECRET=...

GOOGLE_CALLBACK_URL=http://localhost:3001/api/auth/google/callback

GITHUB_CLIENT_ID=...

GITHUB_CLIENT_SECRET=...

GITHUB_CALLBACK_URL=http://localhost:3001/api/auth/github/callback

# Mail dùng cho OTP / reset / verify

MAIL_USER=your-email@example.com

MAIL_PASS=your-provider-key

Auth là lớp cực nhạy cảm: callback URL sai, JWT secret yếu, hoặc mail config thiếu đều có thể biến trải nghiệm người dùng thành “đăng ký được nhưng không vào được app”. Khi deploy thật, hãy verify trọn vẹn cả local auth lẫn social auth bằng end-to-end flow.

Sẵn sàng khám phá dữ liệu?

Tham gia cộng đồng trên GitHub để đóng góp cho IDE cơ sở dữ liệu địa phương thông minh nhất.

Mở Ứng dụng