要求: 用户可以每个会话期间登录只有一次。例如,如果用户从两台不同的机器登录到网站,该网站将显示一条消息“该帐户已被使用”。如果用户从两个不同的浏览器登录,这将适用。如何避免从多台机器使用相同的帐户?
我正在使用“InProc”会话的Web应用程序。该应用程序执行以下操作:
A- When user login, Put Session_ID, user_ID and IP in a table called Sessions.
B- When Session_End is called, Set the row of Sessions table to be marked InActive.
C- When Application_Start is called, the web app deactivate all Sessions.
第一:我不喜欢这样,它会导致数据库中的死锁。我无法验证原因。
二:是Session_End中出示担保在所有情况下运行,我找不到MSDN页说,当应用程序池被回收Session_End中被调用。见http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule.end.aspx
你有一个更好的主意吗? Session_End是否每次调用应用程序池是否被回收?
感谢
阅读20次,没有答案,是不是太复杂?或难以理解的问题?! – Costa 2012-03-04 15:41:09
注意:当用户关闭浏览器时,他将不能再次登录,直到前一个会话过期。在把它作为一个“bug”记录之前,一定要告诉利益相关者。 – 2012-03-05 11:35:12