ASP.NET阻止同一用户多次登录

AJM*_*AJM 1 asp.net security asp.net-mvc forms-authentication

我需要一个ASP.NET Web应用程序,不允许多次登录同一个用户.我认为这是为了防止人们共享用户名和密码.

我遇到的问题是,除非用户明确退出系统,否则很难判断他是否仍然登录并使用系统.

因此,我能想到实现这一目标的唯一可靠方法是每次用户与系统进行交互时将用户ID,IP地址和时间戳记录到数据库,并锁定其他人,如果他们尝试不是来自该IP地址的人并在此表中记录的最后一个日期的十分钟内登录.

谁能想到更好的方法来管理这个?

dan*_*iax 6

如果您使用ASP.NET MembershipProvider,您可以执行以下操作:

    protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
    {
        if (Membership.ValidateUser(Login1.UserName, Login1.Password))
        {
            int time = Membership.UserIsOnlineTimeWindow;

            MembershipUser user = Membership.GetUser(Login1.UserName, true);
            if (user != null)
            {
                if (user.IsOnline)
                {
                    lblMessaggeIsOnLine.Visible = true;
                    e.Cancel = true;
                }
                else
                    lblMessaggeIsOnLine.Visible = false;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)