2

我基本上想在我的LogOn操作中设置一个查看用户名的条件语句,并确定用户名已经登录。

此时应通知用户。

该帐户已登录,如果您认为自己被劫持了……yada yada yada。

我想我可以在这个条件之后添加一些东西,Membership.CheckIfUserIsOnline(string username)那里已经有类似我的方法了吗?

   if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            //See the line below, I made this method up.
            if (Membership.CheckIfUserIsOnline(model.UserName){
                ModelState.AddModelError("", "Someone else is logged into this account.");
            }
4

1 回答 1

3

如果您使用会话状态,我将存储(理想情况下在应用程序范围的缓存中或在您的应用程序数据库中)以用户 ID 为键的记录,存储会话 ID。

然后,当您要检测多个登录时,对照当前会话 ID 检查登录的用户 ID。如果数据库中存储的 Session ID 与当前 Session 的 Session ID 不匹配,则可能表示多次登录。

您必须处理使数据存储中的值过期(这就是为什么应用程序范围的缓存可能比应用程序数据库更好)和会话的正常终止(注销时),但如果您只是使用它来提醒用户,它可能已经足够好了。

于 2011-07-19T17:49:55.570 回答