在Devise上更改密码后终止所有用户会话

时间:2016-12-13 10:00:55

标签: ruby-on-rails session devise warden

当用户更新他们的密码时,我想使他们的所有会话无效(例如在电话或其他浏览器上),并向当前设备发出一个新会话。 如果我打电话,它似乎有效 sign_out @user; sign_in @user,似乎有效。

但是,除了Devise#sign_out和Warden#logout方法的实际实现之外,我找不到支持此声明的文档。

是否有更清洁或更好的文档解决方案?

谢谢!

1 个答案:

答案 0 :(得分:0)

要在Rails中创建新会话,请使用reset_session

在Rails会话中,使用会话标识符,该标识符存储在服务器上,并由客户端存储为cookie。 reset_session从服务器中删除标识符(对于当前用户)并发出新标识符。服务器不接受任何预先存在的会话存储cookie,也不会将其反序列化为session

我建议阅读the Rails guide article on security,因为它对会话在Rails中的实际工作方式有很好的了解。