2

我有使用 ASMX webmethod 等的 web 服务(我知道,已过时),它用于为移动设备提供其应用程序的数据。

现在,用户可以随时在任何设备上登录,次数不限。为了使该产品与新的许可模式兼容,我们希望限制用户登录多个设备。

用户一次只能在一台设备上登录。

我想到了以下解决方案:将上次在请求中使用的移动设备标识符以及请求的时间保存在数据库中。如果用户尝试从另一个移动设备标识符登录(约 10 分钟内)-> 登录失败。

我的问题:我将这段代码放在哪种方法中。我想尽可能地防止重复代码。

我有 4 个带有 API 的 .asmx 文件,我可以将代码放在所有类的构造函数中,但我宁愿不这样做。是否没有一些“Request_Start”已经可以访问 GET/POST 参数?

4

1 回答 1

1

请参阅:

当同一个用户 ID 尝试在多台设备上登录时,如何终止另一台设备上的会话?

我了解您询问的是 ASMX,但我相信这对您来说是一个很好的起点。

我有同样的确切要求,并提出了一个非常巧妙的解决方案,如上面的链接所示。简而言之,我的要求是一次只能有一个用户登录。如果相同的用户 ID 尝试在其他地方登录,那么它会通过检查不同会话 ID 下的现有登录来终止第一次登录的会话(这使得用户 ID 可以从其多个实例登录)计算机上的网络浏览器 [相同的会话 ID],这很常见,但不是来自不同的计算机 [不同的会话 ID](例如,可能是由于某人窃取了他们的凭据))。通过修改代码,您可能会改变它的行为 - 即,阻止第二次登录尝试,而不是杀死已经处于活动状态且正在使用的第一次登录。

当然,它可能无法 100% 满足您的需求,因此请随意修改它以满足您的需求。

于 2013-07-08T13:57:41.323 回答