我正在构建的网站要求用户一次只能使用一个会话登录。如果用户在当前登录时尝试从其他浏览器或计算机登录该站点,则需要拒绝其登录尝试。
我已经考虑将数据库中的用户对象标记为已登录,但这对我来说似乎很脆弱,因为如果用户实际上没有正式注销,则该标志仍然存在,并且用户被不公平地拒绝。要管理这个,我必须定期运行某种清理任务,以确保重置这些标志,这可能会引入各种其他问题。
我使用Sinatra
作为核心框架,Warden
作为身份验证管理器。对于这种要求,是否存在“最佳实践”策略?
答案 0 :(得分:0)
这确实不是身份验证问题,而是“我如何处理经过身份验证的用户在登录时尝试登录时会发生什么情况” - 因此您需要先回答该问题。当某人已经登录时你想做什么?给出最新的会话优先级?也就是说,让同一个用户关闭旧会话?
答案 1 :(得分:0)
如果用户在当前登录时尝试从其他浏览器或计算机登录该站点,则需要拒绝其登录尝试。
和
如果用户实际上没有正式注销,那么该标志仍然存在并且用户被不公平地拒绝
彼此直接冲突。你必须选择哪些胜利,无论是旧的还是新的,你选择了旧的...所以那里没有什么不公平的。