Hướng dẫn dùng Hive để lưu token đăng nhập

Tóm tắt nhanh
Tìm hiểu cách sử dụng Hive để lưu trữ token đăng nhập một cách an toàn và hiệu quả trong Flutter.
Mục lục bài viết (25)
- Setup Hive
- 1. Dependencies
- 2. Install
- Tạo Auth Model
- 1. Tạo AuthData Model
- 2. Generate Adapter
- Tạo Auth Service
- 1. Auth Storage Service
- Sử dụng trong Login Flow
- 1. Login Service
- Sử dụng trong App
- 1. Initialize trong main.dart
- 2. Auth Provider
- 3. Sử dụng trong Widget
- Security Best Practices
- 1. Sử dụng Flutter Secure Storage cho token nhạy cảm
- 2. Encrypt sensitive data
- Best Practices
- 1. Auto-refresh Token
- 2. Clear on Logout
- Lưu ý quan trọng về bảo mật khi lưu token
- Nên lưu những gì và vòng đời của token
- Kết luận
- Tóm tắt:
- Học Flutter bài bản theo lộ trình
Lưu trữ token đăng nhập an toàn là điều quan trọng. Bài viết này sẽ hướng dẫn bạn sử dụng Hive để lưu token một cách hiệu quả.
Setup Hive
1. Dependencies
[object Object]2. Install
[object Object]Tạo Auth Model
1. Tạo AuthData Model
[object Object]2. Generate Adapter
[object Object]Tạo Auth Service
1. Auth Storage Service
[object Object]Sử dụng trong Login Flow
1. Login Service
[object Object]Sử dụng trong App
1. Initialize trong main.dart
[object Object]2. Auth Provider
[object Object]3. Sử dụng trong Widget
[object Object]Security Best Practices
1. Sử dụng Flutter Secure Storage cho token nhạy cảm
[object Object]2. Encrypt sensitive data
[object Object]Best Practices
1. Auto-refresh Token
[object Object]2. Clear on Logout
[object Object]Lưu ý quan trọng về bảo mật khi lưu token
Trước khi dùng Hive cho token, cần nói rõ một điểm mà nhiều bài hướng dẫn bỏ qua: Hive mặc định không nằng dữ liệu. Tệp dữ liệu nằm trong thư mục riêng của ứng dụng, và trên máy đã root hoặc jailbreak thì có thể đọc được. Điều này có nghĩa là Hive phù hợp để học, làm đổ án, hoặc lưu token của ứng dụng ít rủi ro — nhưng với ứng dụng thật có dữ liệu người dùng, hãy dùng kho lưu trữ bảo mật của hệ điều hành (keychain trên iOS, keystore trên Android).
Nếu vẫn muốn dùng Hive cho dự án thật, có hai cách giảm rủi ro:
- Bật mã hoá của Hive bằng một khoá mã hoá. Vấn đề còn lại là khoá đó phải được lưu ở đâu — nếu lưu cùng thiết bị thì không giải quyết được vấn đề gốc. Cách đúng là lấy khoá từ kho lưu trữ bảo mật của hệ điều hành.
- Không lưu token thật. Một số ứng dụng chỉ lưu cờ đã đăng nhập và để server giữ phiên qua cookie bảo mật; cách này an toàn hơn nhưng phụ thuộc vào kiến trúc máy chủ.
Nên lưu những gì và vòng đời của token
Cấu trúc dữ liệu lưu phiên ảnh hưởng trực tiếp tới việc xử lý đúng các trường hợp hết hạn. Tối thiểu cần bốn thông tin:
- Token truy cập — dùng để gọi API.
- Token làm mới — dùng để lấy token truy cập mới khi hết hạn.
- Thời điểm hết hạn — lưu dưới dạng thời gian tuyệt đối, không lưu "còn bao nhiêu giây".
- Định danh người dùng — cần khi bạn muốn xoá dữ liệu cục bộ của đúng người dùng khi họ đăng xuất.
Vòng đời cần xử lý đủ ba tình huống, và đây là nơi phần lớn lỗi đăng nhập phát sinh:
- Khởi động ứng dụng — đọc phiên từ bộ nhớ, kiểm tra thời điểm hết hạn. Nếu còn hạn thì vào thẳng màn hình chính; nếu hết hạn mà có token làm mới thì thử làm mới trước khi hiện màn hình đăng nhập.
- Gặp lỗi 401 khi gọi API — làm mới token một lần duy nhất, sau đó chạy lại yêu cầu. Nếu làm mới cũng thất bại thì xoá phiên và chuyển về màn hình đăng nhập.
- Đăng xuất — xoá cả token và dữ liệu cục bộ khác của người dùng đó. Chỉ xoá token mà để lại dữ liệu cũ là nguyên nhân của lỗi "người dùng khác đăng nhập lại thấy dữ liệu của người trước".
Một điểm nhỏ nhưng hay bị bỏ sót: khi đăng nhập lại, hãy xoá phiên cũ trước khi ghi phiên mới. Nếu không, một số trường hợp sẽ giữ lại trạng thái cũ và gây hành vi khó hiểu như màn hình hiển thị thông tin của tài khoản trước.
Kết luận
Sử dụng Hive để lưu token:
- ✅ Hiệu quả: Nhanh và type-safe
- ✅ Dễ sử dụng: API đơn giản
- ✅ An toàn: Có thể kết hợp với secure storage
- ✅ Persistent: Dữ liệu được lưu lâu dài
Tóm tắt:
- Setup Hive: Initialize và register adapter
- Create Model: Tạo AuthData model
- Storage Service: Tạo service quản lý token
- Auth Service: Tích hợp với login flow
- Security: Sử dụng secure storage cho sensitive data
Lưu token đúng cách sẽ đảm bảo security và user experience tốt! 🚀
Học Flutter bài bản theo lộ trình
Nếu bạn muốn học có người sửa bài thay vì tự ghép tài liệu, Flutter Hướng Nghiệp đào tạo theo 3 cấp:
- Flutter Cơ Bản — Dart, widget, giao diện, 28 buổi.
- Flutter Nâng Cao — state management, REST API, Firebase, 28 buổi.
- Flutter Chuyên Sâu — back-end, AI/ML, publish lên store, 53 buổi.
Lớp online trực tiếp qua Zoom/Google Meet, có bản ghi lại — không bắt buộc đến cơ sở.
Xem lịch khai giảng hoặc so sánh 5 cách học lập trình mobile nếu còn phân vân.
