如何在Rails的RSpec测试中删除加密Cookie?
要删除通过cookies.encrypted设置的Cookie,你不需要使用cookies.encrypted.delete(这个方法确实不存在),直接操作底层的cookies对象即可——因为加密Cookie本质是将加密后的值存储在同名的标准Cookie中。
具体操作
- 基础删除方式:直接调用
cookies.delete并传入Cookie键名
cookies.delete('something')
- 带选项的删除:如果设置加密Cookie时指定了
domain、path、secure等额外选项,删除时必须带上完全相同的选项才能正确匹配并删除:
# 设置带选项的加密Cookie cookies.encrypted['something'] = { value: 'a thing', domain: '.yourdomain.com', path: '/admin' } # 匹配选项删除 cookies.delete('something', domain: '.yourdomain.com', path: '/admin')
原理说明
cookies.encrypted是Rails提供的代理对象,仅负责对Cookie值进行加密/解密,实际的Cookie存储、删除操作都由底层的cookies对象完成。因此删除加密Cookie和删除普通Cookie的逻辑一致,只需确保键名与选项匹配即可。
内容的提问来源于stack exchange,提问作者Guilherme Luiz
相关产品推荐
相关产品推荐

