防止来自同一用户名的多个连接

时间:2010-11-02 23:58:22

标签: asp.net login asp.net-membership membership-provider

我正在使用提供的ASP.NET SQL Membership&角色提供者在我的应用程序

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

也许您可以存储您正在使用的任何内容,以便像ApplicationState中的UserId一样唯一地标识用户,并检查该值是否为空。您在SessionState开始时将其UserId值添加到ApplicationState,然后在SessionState结束时从ApplicationState中删除该值。

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