表单身份验证IsOnline方法无法检索正确的状态

时间:2010-09-21 13:41:36

标签: asp.net-mvc forms-authentication

我在ASP.NET MVC项目中使用表单身份验证。

当前用户点击Exit链接时,代码执行按顺序执行的操作:

System.Web.Security.FormsAuthentication.SignOut();
Session.Abandon();

第二次通话不合适,因为我根本没有使用会话。

问题是,如果我使用管理员帐户登录,我可以看到用户仍然登录。

我做错了什么?

感谢您的帮助!

修改

添加登录代码只是为了完成

if (ModelState.IsValid) {
    if (MembershipService.ValidateUser(model.UserName, model.Password)) {
        System.Web.Security.FormsAuthentication.SignIn(model.UserName, model.RememberMe);
        if (!String.IsNullOrEmpty(returnUrl)) {
            return Redirect(returnUrl);
        }
        else {
            return RedirectToAction("Index", "Home");
        }
    }
    else {
        ModelState.AddModelError("", "Error....");
    }
}

1 个答案:

答案 0 :(得分:0)

确定。我找到了问题。

我正在使用,向当前的loggein用户显示以下调用

MembershipUser user = Membership.GetUser(userKey,true) if(user.IsOnline){     ... }

我已经意识到GetUser方法的第二个参数将User状态设置为online并更新数据存储中的LastActivity字段。 我不知道为什么这样做是这样的,但就是这样......