设计退出

时间:2011-06-09 18:13:35

标签: ruby-on-rails ruby-on-rails-3 devise

上次,我问这个问题我被误解了。所以:

在我的Rails3应用程序中,我使用Devise进行身份验证。我有要求说,每个用户只能从一个浏览器登录。这意味着如果用户A登录(例如在FF上),然后从其他计算机,或从其他浏览器(例如Chrome)登录请求登录用户A,则应该登出第一个。

我发现,我可以覆盖SessionController,它是create方法。但是,我没有看到任何方法来检查用户是否具有给定的电子邮件(params [:email])当前是否已登录,此外我不知道应该调用哪种方法来销毁此用户会话。

2 个答案:

答案 0 :(得分:1)

我只是为会话中的每个页面加载存储一个时间戳。将before_filter中的this与用户的last_seen字段进行比较。如果上次看到的用户是在会话时间戳之后销毁用户会话。

答案 1 :(得分:0)

我采取的方法是修改trackable或lastseen插件,然后使用warden回调。

https://github.com/hassox/warden/wiki/Callbacks

不是一个好的答案,但也许可以让你开始。