2012-05-06 35 views
13

Tôi hiện đang tạo trang web bằng Visual Studio 2010. Tôi đang sử dụng giản đồ thành viên mặc định trong SQL Server 2008 để xác thực người dùng. Bây giờ tôi đang đối mặt với vấn đề sau.MembershipUser.IsOnline là đúng ngay cả sau khi đăng xuất

Khi người dùng đăng xuất, tư cách thành viên. Thuộc tính trực tuyến của người dùng đó phải được đặt thành false. Tuy nhiên, nó không xảy ra; membership.IsOnline thuộc tính của người dùng đó vẫn đúng.

Tôi đang sử dụng điều khiển LoginStatus để cung cấp liên kết đăng xuất cho người dùng.

Tôi đã cố gắng theo dõi User.IsOnline = true even after FormsAuthentication.SignOut(). Nhưng kết quả không có gì.

Trả lời

15

AFAIK, FormsAuthentication.SignOut không có mối quan hệ trực tiếp với hệ thống tư cách thành viên. Do đó, bạn phải cập nhật LastActivityDate theo cách thủ công như bạn đã đề cập trong câu hỏi của mình. Và sử dụng Membership.UserIsOnlineTimeWindow thay vì -2.

Từ MSDN

Giá trị tài sản UserIsOnlineTimeWindow được kiểm tra trong suốt cuộc gọi để GetNumberOfUsersOnline. Nếu LastActivityDate cho người dùng là lớn hơn ngày và giờ hiện tại trừ đi UserIsOnlineTimeGiá trị giá trị bằng phút, thì người dùng được coi là trực tuyến. Bạn có thể xác định liệu người dùng thành viên có được coi là trực tuyến với thuộc tính IsOnline của lớp MembershipUser hay không.

MembershipUser user = Membership.GetUser(false); 

FormsAuthentication.SignOut(); 

user.LastActivityDate = DateTime.UtcNow.AddMinutes(-(Membership.UserIsOnlineTimeWindow + 1)); 
Membership.UpdateUser(user); 
+0

Cảm ơn Mehdi Golchin. Nó thật sự có hiệu quả. Cảm ơn rất nhiều. –

+0

Cảm ơn bạn đã cung cấp thêm thông tin. Điều này sẽ giúp tôi tiếp cận thêm. –

+0

Bạn được chào đón :) –

Các vấn đề liên quan