User.IsOnline = true even after FormsAuthenticatio

2020-04-11 10:17发布

问题:

I have set UserIsOnlineTimeWindow ="2" in web.config then my logout() function has been modified as

public ActionResult LogOff()
    {

        MembershipUser usr = Membership.GetUser();
        usr.LastActivityDate = DateTime.Now.AddMinutes(-2);
        FormsAuthentication.SignOut();
        return RedirectToAction("Index", "Home");
    }

Still after returning to Home after Logout still the User.IsOnline = true

Only after idle time of 2 minutes User.IsOnline = false

How to make the user Offline at FormsAuthentication.SignOut(); Please help.

回答1:

Not sure if signOut is also considered as an activity.

I suggest you set the LastActivityDate after the SignOut method. And don't forget to update the user info.

like this:

MembershipUser usr = Membership.GetUser(false);
FormsAuthentication.SignOut();
usr.LastActivityDate = DateTime.Now.AddMinutes(-2);
Membership.UpdateUser(usr);

I just tested in my App, it works.