假设我们必须紧急重置Rails 7应用程序中的所有会话(例如:在更改主要ID之后)。如何做正确的方式?
u4vypkhs1#
会话存储在客户端,所以你不能删除它们,你只能使它们无效,我知道两种方法。
secret_key_base
会话cookie是使用应用程序的secret_key_base加密的,因此更改它将使之前创建的所有会话无效。虽然这看起来又快又容易,但我会避免它,因为它也可能破坏其他使用secret_key_base签名或加密其他数据的东西。
将保存版本的新密钥添加到会话。它可以是应用程序的一个版本,也可以是会话本身的一个版本。然后你可以实现任何你想要的逻辑。首先拒绝任何没有版本的会话。稍后,您可以执行一些操作,例如允许来自以前的修补程序版本的会话,并拒绝来自以前的次要和主要版本的会话。
1条答案
按热度按时间u4vypkhs1#
会话存储在客户端,所以你不能删除它们,你只能使它们无效,我知道两种方法。
1.修改
secret_key_base
会话cookie是使用应用程序的
secret_key_base
加密的,因此更改它将使之前创建的所有会话无效。虽然这看起来又快又容易,但我会避免它,因为它也可能破坏其他使用secret_key_base
签名或加密其他数据的东西。2.为会话添加版本
将保存版本的新密钥添加到会话。它可以是应用程序的一个版本,也可以是会话本身的一个版本。然后你可以实现任何你想要的逻辑。首先拒绝任何没有版本的会话。稍后,您可以执行一些操作,例如允许来自以前的修补程序版本的会话,并拒绝来自以前的次要和主要版本的会话。