Tôi đang phát triển một trang web ASP.net (sử dụng .NET 4, EF, jQuery Ajax, SQL Server 2008 R2). Trong trang web này, tôi muốn ngăn chặn multi-login
. Tôi có nghĩa là nếu bạn đăng nhập vào trang web, bạn không thể đăng nhập lại vào trang web từ trình duyệt hoặc máy tính khác vì bạn đã đăng nhập rồi.Làm cách nào để ngăn người dùng đăng nhập vào trang web của tôi nhiều hơn một phiên?
Tôi trồng một ý tưởng và phát triển nó trên trang web của tôi, nhưng nó có một vấn đề và đó là vì rằng vấn đề mà tôi quyết định đặt một câu hỏi ở đây
Tôi có một bảng SQL Server như thế này:
Id [int] NOT NULL IDENTITY(1,1) //PK
UserId [int] NOT NULL //Relation to User table
Key [nvarchar](50) NOT NULL //Unique
Khi người dùng đăng nhập vào trang web này, tôi chèn một hàng vào bảng này như thế này:
UserId = The Id of logged in user
Key = Session.SessionId
và cũng có một mã cho xóa một bản ghi từ bảng này mà thực hiện wh en:
- tài cố gắng để thoát ra khỏi tài khoản của mình
- trên
Session_End
sự kiện trongglobal.asax
Mọi thứ hoạt động chính xác và hoàn hảo, chỉ cần:
Vấn đề: khi người dùng đóng trình duyệt , hàng đó không bị xóa (tôi nghĩ khi anh ta đóng trình duyệt, hàng của nó trong bảng đó sẽ xóa trên sự kiện Session_End
, nhưng nó không !!!)
Tôi có thể làm gì? Bất kỳ giải pháp cho vấn đề này? Tôi có nên thay đổi chiến lược của mình hoặc có giải pháp không?
Xin lỗi về cú pháp không hợp lệ của tôi. Tôi mới bằng tiếng Anh
Bất kỳ ý tưởng có thể hữu ích
liên quan
Foroughi
UPDATE1: tôi không sử dụng ASP thành viên và quản lý người dùng của tôi bản thân mình
UPDATE2: tôi sử dụng InProc mo cho trạng thái phiên của tôi với thời gian chờ 20 phút
Không dễ dàng hơn khi đăng xuất phiên hiện tại khi người dùng đăng nhập mới không? Điều này cũng thực tế hơn khi người dùng quên đăng xuất ở một vị trí khác (ví dụ: nhà riêng/cơ quan). –
@marc_s cảm ơn anh chàng và xin lỗi về họ –
@AliForoughi: không vấn đề gì - câu hỏi vẫn rõ ràng và hoàn toàn dễ hiểu –