我正在尝试解决如何阻止用户同时使用来自不同设备的webapp。
我想在新用户登录时注销任何旧会话。但是, 我不希望每个请求都查询数据库。
我有几个想法,任何人都可以解释哪个更好,或者是否有更好的解决方案。 (已阅读有关互斥体的信息,但它似乎适用于winforms?)
方法1,
>登录时在数据库中存储sessionID。
>发生新登录时,请从存储中删除/删除/使以前的SessionID无效。
方法2,
>使用包含“user_session”对象列表的静态类,每个对象包含一个LoginID和SessionID。
>登录时更新静态类sessionID
>在加载每个页面时,检查sessionID!=静态类的sessionID。如果是,请注销用户。
方法3,
>应用程序缓存(与上面相同的方法,但用应用程序缓存替换静态类)
方法4,
>使用Application_PreRequestHandlerExecute,在登录时,我可以存储UserID + deviceID
>将其存储在web.cache中,然后存储在每个请求中,如果cache.UserID.DeviceID!= session会话,请将用户注销。
方法5,
>在会话中存储设备ID >在登录时更改会话Cookie ID以匹配当前会话的ID。 不确定这是否可能或会导致任何意外结果
真的会对什么是更好的解决方案提出一些意见。如果有另一种方法来实现所述功能。干杯!