Giải pháp quản lý trạng thái login -> Thực tế:
- Cách 1: Chỉ cho phép người dùng login vào 1 web tại 1 thời điểm
- Ko cần thêm bảng:
- Cách 2: Cho login nhiều trình duyệt + ở nhiều thiết bị
- Thêm bảng để làm
Ý tưởng giải pháp
1] Login -> nhập thông tin
- Login thành công
- Lưu thông $_SESSION['currentUser'] = dữ liệu người -> Tồn tại trong 1 khoảng thời gian ngắn
- Tạo ra token = giải thuật -> mỗi 1 người + tại một thời điểm login -> duy nhất -> ko trùng vs người khác
- Lưu token vào database [user: Cách 1, tokens [id người dùng, token]: Cách 2] -> Tồn tại tới khi xóa thì thôi
- Lưu token vào cookie [1 tuần, 1 tháng, 1 năm -> OK]
-> Validate trạng thái đã login bằng cách nào
- B1. Check $_SESSION['currentUser']
-> Tồn tại -> OK -> Xong login
-> Ko tồn tại:
- B2. Check tiếp:
- Đọc token từ cookie [Không tồn tại -> chưa login]
- Tìm token trong bảng tokens hoặc user
-> thông tin người dùng -> lưu xuống $_SESSION['currentUser']
-> Ko tìm thấy -> token fake -> login.php
- Login thất bại: ko nói -> OK
-----------------------------------------------
alter table Users
add token nvarchar[32]
#api_user.php