我正在使用提供的ASP.NET SQL Membership&角色提供者在我的应用程序
如何防止同一用户使用相同的凭据从不同的工作站登录?我可以想象使用IP地址,但我真的不知道从哪里开始......
同样路由器背后的用户呢?有没有办法阻止他们从不同的客户端PC访问?
答案 0 :(得分:2)
IP不是一种非常好的方式,因为典型公司LAN背后的所有用户都会认为您是从同一IP连接。解决方法是注销使用相同凭据登录的用户,从而仅保留最新登录的用户。这可以通过在应用程序或数据库中保留登录用户的ID或名称来实现。一旦启动了新的用户会话,请检查用户是否在Application / DB中。如果是这样,请将其标记为脏。在页面中,检查应用程序中是否存在UserID / Name,如果用户被标记为脏,则调用注销。这可以在BasePage中实现,该站点/应用程序中的所有页面都继承自。
答案 1 :(得分:1)
也许您可以存储您正在使用的任何内容,以便像ApplicationState中的UserId一样唯一地标识用户,并检查该值是否为空。您在SessionState开始时将其UserId值添加到ApplicationState,然后在SessionState结束时从ApplicationState中删除该值。
ApplicationState对Web应用程序是全局的,这意味着它可以访问所有用户和会话,而SessionState的范围仅限于单个用户和会话。