如何使用restful_authentication(rails插件)仅为单个帐户允许单个会话

时间:2011-12-08 15:12:44

标签: ruby-on-rails session restful-authentication

我在rails 2.3.5中使用restful_authentication插件。应用。 在此应用程序中,我希望允许同时为单个帐户登录一个会话。 换句话说,我不希望用户使用多台计算机使用单个帐户登录。 restful_authentication插件是否支持此功能? 如果没有,我怎么才能实现这个功能呢? 请给我一些建议。 非常感谢你提前。

1 个答案:

答案 0 :(得分:1)

开箱即用,没有。您可以使用用户ID跟踪表中的会话ID,然后检查是否正在使用相同的会话ID。但是,这很笨拙,当用户忘记注销时,你会给用户带来麻烦。您还需要为会话实现某种超时,这样您就不会最终导致永久锁定用户的会话。

另一种方法是切换到authlogic。它也不支持开箱即用,但应该更容易实现。一个可能的解决方案has been posted here.我没有测试那里写的内容,但这种方法看起来很像我在这种情况下尝试做的。

在许多应用中同时使用了restful_authenticationauthlogicauthlogic获胜。还有Devise,许多人都取得了成功。 (我不是其中之一,但也许我的需求与这个宝石所提供的东西不一致。)你应该在攻击现有设置之前探索Devise和authlogic,因为新宝石的模块化设计应该更多当它结束时产生更清洁的代码。

另外:将您的Rails更新为最新的2.3。*。自2.3.5起就有许多安全修复程序。