注销后,MembershipUser.IsOnline为true

时间:2012-05-06 03:34:31

标签: asp.net membership logout

我目前正在使用Visual Studio 2010创建一个网站。我正在使用SQL Server 2008中的默认成员资格架构进行用户身份验证。现在我面临以下问题。

当用户注销时,该用户的membership.IsOnline属性应设置为false。然而,它没有发生;该用户的membership .IsOnline属性仍然是true。

我正在使用LoginStatus控件向用户提供注销链接。

我试图关注User.IsOnline = true even after FormsAuthentication.SignOut()。但结果没什么。

1 个答案:

答案 0 :(得分:15)

AFAIK,FormsAuthentication.SignOut与会员制度没有直接关系。因此,您必须按照问题中的提及手动更新LastActivityDate。并使用Membership.UserIsOnlineTimeWindow代替-2。

来自MSDN

  

在调用期间检查UserIsOnlineTimeWindow属性值   到GetNumberOfUsersOnline。如果用户的LastActivityDate是   大于当前日期和时间减去   UserIsOnlineTimeWindow值以分钟为单位,然后考虑用户   线上。您可以确定是否考虑成员资格用户   在线使用MembershipUser类的IsOnline属性。

MembershipUser user = Membership.GetUser(false);

FormsAuthentication.SignOut();

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