我一直在做练习
它说,我应该确认会话在注销后被删除,是否使用
session.delete(:user_id)会让我的浏览器(火狐)中的cookie消失吗?
另外,我已经注意到,当我访问网站上不同的页面时,cookie的内容会发生变化,这是一种有意的行为吗?当我第一次访问我的网站时,即使没有登录,我也会得到曲奇。
发布于 2017-02-18 08:09:02
不,它只需从cookie中删除密钥,就像我们在源代码dispatch/request/session.rb#L146中看到的那样。它实际上会杀死经过身份验证的用户,但是cookie仍然存在(它只是不会说用户已经被认证了)。
另外,我已经注意到,当我访问网站上不同的页面时,cookie的内容会发生变化,这是一种有意的行为吗?
是的,如果您使用的是CookieStore (这是Rails中的默认方式),那么所有的数据都存储在cookie上。因此,如果添加或更改字段,cookie就会更改。(您会注意到数据是加密的,因此这是安全的)。http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html
当我第一次访问我的网站时,即使没有登录,我也会得到曲奇。
Rails在进行任何身份验证之前就启动会话是有意义的--它基本上只是一个标识符,还没有任何数据。“会话”不一定是指经过身份验证的用户,您可能希望保存用户的首选语言,或者保存他在经过身份验证之前打开网站的时间。
https://stackoverflow.com/questions/42312251
复制相似问题