我对ASP.NET web应用程序有一个要求,即不允许同一用户多次登录。我认为这是为了防止人们共享用户名和密码。
我遇到的问题是,除非用户显式地从系统中注销,否则很难判断他是否仍在登录并使用系统。
因此,我能想到的实现这一点的唯一可靠方法是,每次用户与系统进行交互时,将用户id、IP地址和时间戳记录到数据库中,如果他们试图在此表中记录的最后日期的十分钟内登录,则将不属于该IP地址的任何其他人锁定。
有没有人能想出更好的方法来管理这件事呢?
发布于 2011-06-14 16:16:44
如果您使用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;
}
}
}发布于 2011-06-14 16:22:42
如果您的会话状态模式不是SqlServer,则可以在global.asax中使用SqlServer事件。
例如:
您的配置:
<sessionState timeout="15"></sessionState>15分钟后,您的sessionend事件被触发,您可以注销用户
发布于 2011-06-14 16:23:35
你是正确的。您需要管理用户登录并执行相应的操作。让我知道您是使用自己的提供程序,还是使用ASP.NET提供程序。默认提供程序中有一些选项。
https://stackoverflow.com/questions/6340813
复制相似问题