【发布时间】:2011-05-04 05:54:43
【问题描述】:
我在我的应用程序中使用提供的 ASP.NET SQL 成员资格和角色提供程序。
如何防止同一用户使用相同的凭据从不同的工作站登录?我可以想象为此使用 IP 地址,但我真的不知道从哪里开始......
另外,同一路由器后面的用户呢?有没有办法阻止他们从不同的客户端 PC 访问?
【问题讨论】:
标签: asp.net login asp.net-membership membership-provider
我在我的应用程序中使用提供的 ASP.NET SQL 成员资格和角色提供程序。
如何防止同一用户使用相同的凭据从不同的工作站登录?我可以想象为此使用 IP 地址,但我真的不知道从哪里开始......
另外,同一路由器后面的用户呢?有没有办法阻止他们从不同的客户端 PC 访问?
【问题讨论】:
标签: asp.net login asp.net-membership membership-provider
IP 不是一个很好的方法,因为典型公司 LAN 后面的所有用户在您看来都是从同一个 IP 连接的。一种解决方法是注销使用相同凭据登录的用户,从而仅保留最新登录的用户。这可以通过将登录用户的 ID 或名称保存在 Application 或 DB 中来实现。一旦新的用户会话开始,检查用户是否存在于应用程序/数据库中。如果是这样,请将其标记为脏。在页面中,检查应用程序中是否存在用户 ID/名称,如果用户被标记为脏,则调用注销。这可以在站点/应用程序中的所有页面都继承自的 BasePage 中实现。
【讨论】:
也许您可以存储用于唯一标识用户的任何内容,例如 ApplicationState 中的 UserId,并检查该值是否不为空。您在 SessionState 开始时将他们的 UserId 值添加到 ApplicationState,然后在 SessionState 结束时从 ApplicationState 中删除该值。
ApplicationState 对于 Web 应用程序来说是全局的,这意味着所有用户和会话都可以访问它,而 SessionState 的范围仅限于单个用户和会话。
【讨论】: