当用户更新他们的密码时,我想使他们的所有会话无效(例如在电话或其他浏览器上),并向当前设备发出一个新会话。
如果我打电话,它似乎有效
sign_out @user; sign_in @user
,似乎有效。
但是,除了Devise#sign_out和Warden#logout方法的实际实现之外,我找不到支持此声明的文档。
是否有更清洁或更好的文档解决方案?
谢谢!
答案 0 :(得分:0)
要在Rails中创建新会话,请使用reset_session
。
在Rails会话中,使用会话标识符,该标识符存储在服务器上,并由客户端存储为cookie。 reset_session
从服务器中删除标识符(对于当前用户)并发出新标识符。服务器不接受任何预先存在的会话存储cookie,也不会将其反序列化为session
。
我建议阅读the Rails guide article on security,因为它对会话在Rails中的实际工作方式有很好的了解。