2010-11-02 73 views
1

我在我的应用程序中使用提供的ASP.NET SQL成员资格&角色提供程序。防止来自同一用户名的多个连接

如何防止同一用户使用相同凭据从不同的工作站进行登录?我可以想象使用IP地址为此,但我真的不知道从哪里开始...

同样路由器背后的用户呢?有没有办法阻止他们从不同的客户端PC访问?

回答

2

IP不会是一种非常好的方式,因为典型的公司局域网背后的所有用户都会认为你是从同一个IP连接的。解决方法是注销使用相同凭证登录的用户,从而只保留最新登录的用户。这可以通过将登录用户的ID或名称保存在应用程序或数据库中来实现。一旦新用户会话开始,请检查用户是否在应用程序/数据库中。如果是这样,请将其标记为脏。在这些页面中,检查应用程序中是否存在UserID/Name,如果用户被标记为脏,请调用注销。这可以在BasePage中实现,即网站/应用程序中的所有页面都从中继承。

1

也许您可以存储您正在使用的唯一标识用户的所有内容,例如ApplicationState中的UserId,并检查该值是否为空。您可以在SessionState的开始将他们的UserId值添加到ApplicationState,然后在SessionState的末尾从ApplicationState中移除该值。

ApplicationState对于Web应用程序是全局的,这意味着它可以被所有用户和会话访问,而SessionState的作用域被限制为单个用户和会话。