Giới hạn thiết bị được đăng nhập trên cùng 1 tài khoản trong php laravel

Xin chào mọi người, em đang có 1 trang web viết bằng laravel. Em đang muốn giới hạn số lượng người dùng đăng nhập vào 1 nick trên cùng 1 thời điểm, nghĩa là chỉ 2 thiết bị được đăng nhập 1 nick (thiết bị thứ 3 đăng nhập thì logout các thiết bị còn lại)
Mọi người có cách nào chỉ em với ạ
Em xin cám ơn

Bạn lưu lại user agent vào database, mỗi khi đăng nhập thì server sẽ lấy user agent của device để check.

2 Likes

nếu ko đúng thì làm sao để out mấy phiên bản đã đăng nhập trước đó ạ

Mỗi khi user login, mình sẽ lưu lại thông tin của lần login đó, ví dụ như user agent, và tạo ra 1 chuỗi số ngẫu nhiên (tạm gọi gọi là token hay session ID gì đó tuỳ ý) và lưu vào database, song song lưu vô session đang chạy. Thông tin ở 2 nơi này phải khớp nhau.

Mỗi khi bạn check status của user coi có login không (ví dụ như khi load page mới, hay click vô cái gì đó), thì bạn check những thông tin đã lưu (user agent, token…) trong database và trong session có khớp nhau không

Nếu khớp thì ok, không có gì xảy ra
Nếu không khớp thì force logout

Nếu bạn muốn giới hạn trên X thiết bị, thì vẫn áp dụng logic này, và thêm 1 vài thông tin khác để check thôi

6 Likes

User-agent là dở rồi, nó đâu có tính duy nhất.
Bạn nên sử dụng kỹ thuật gọi là Browser Fingerprint kết hợp với địa chỉ IP để giới hạn người dùng.
Còn đơn giản nhất thì bạn dùng session-id để kiểm soát việc đăng nhập

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?