我正在开发一个多用户桌面应用程序。我需要想办法让每个用户只允许一个用户一次登录。基本上,John无法从PC-A登录到应用程序,然后运行到PC-B并登录。我想到的是设置一个标志,指示用户已登录,并且当从另一个位置尝试它会建议用户当前用户名已经登录时。这将重复直到John on PC-A退出系统或手动注销。唯一的问题是如果应用程序崩溃,则不会调用注销方法。建议?
答案 0 :(得分:2)
如果您不能依赖于正常退出应用程序或至少捕获所有异常并进行适当处理,我认为唯一的选择是采用会话方法。基本上,当每个用户登录时,会建立一个新会话,并且该会话ID将针对以后的任何呼叫进行验证。
通过执行此操作,您可以允许在尝试登录其他位置时终止现有/打开会话。如果他们尝试从PC B登录并且已经从PC A登录 - 您只需将其置于提示中,如果他们选择从PC B继续,则PC A上的会话将被停用。即使有人在PC A上主动使用该应用程序,他们发出的下一个服务呼叫也应该在会话结束时被拒绝。
答案 1 :(得分:1)
查看MySQL的GET_LOCK()和RELEASE_LOCK()函数。