上次,我问了这个问题,我被误解了。因此:
在我的Rails3应用程序中,我使用Devise进行身份验证。我的要求是,每个用户只能从一个浏览器登录。这意味着,如果用户A登录(例如在FF上),然后从其他计算机或其他浏览器(例如Chrome)来请求登录用户A,则第一个用户应该注销。
我发现,我可以覆盖SessionController及其创建方法。然而,我看不到任何方法来检查具有给定电子邮件(params[:email])的用户当前是否已登录,此外,我不知道应该调用哪种方法来销毁此用户会话。
我只会为会话中的每个页面加载存储一个时间戳。在before_filter中将其与user的lastrongeen字段进行比较。如果最后一次看到用户是在会话时间戳之后,则销毁用户会话。
我会采取的方法是修改可跟踪或lastseed插件,然后使用管理员回调。
https://github.com/hassox/warden/wiki/Callbacks
不是一个很好的答案,但也许可以让你开始。