如何在ApplicationController中设置cookie?

时间:2011-06-05 16:59:08

标签: ruby-on-rails cookies applicationcontroller

我需要在ApplicationController中设置cookie,但我不确定如何。我尝试过使用cookies - 没什么,使用ActionController :: Cookies - 没什么。 我不需要设置和获取cookie,但我需要的是在 ApplicationController 中设置它们。

编辑:

找到答案:request.cookies['help'] = 'yes'

3 个答案:

答案 0 :(得分:41)

在应用程序控制器中设置cookie是什么意思?您可以在浏览器中设置与某些控制器操作相对应的cookie。如果要为所有操作设置cookie,则可以考虑使用before过滤器并将该过滤器应用于所有控制器操作。

您可以设置和删除Cookie,如下所示:

   cookies[:key] = {
       :value => 'a yummy cookie',
       :expires => 1.year.from_now,
       :domain => 'domain.com'
     }

     cookies.delete(:key, :domain => 'domain.com')

请注意,如果您在设置Cookie时指定了:域,则还必须在删除Cookie时指定域。

e.g。 cookies[:user_name] = "david"

答案 1 :(得分:16)

您可以简化您想要暂停一段时间的Cookie

cookies.permanent[:some_cookie] = "gingerbread"

答案 2 :(得分:0)

通过ActionController#cookies读取和写入Cookie。读取的cookie是随请求一起接收的cookie,写入的cookie将与响应一起发送出去。读取cookie并不会使cookie对象本身返回,而只是保持它的值。

cookies[:appToken] = {
  value: 'IOWQ92038192319JKNJKW',
  expires: 1.year.from_now,
  domain: 'www.example.com',
  path: '/admin',
  secure: false,
  httponly: false,
}

path-此cookie适用的路径。默认为应用程序的根目录。

secure-此cookie是否仅传输到HTTPS服务器。默认值为false

httponly-该cookie是通过脚本访问还是仅通过HTTP访问。默认为false。如果cookie httponly设置为true,则可以通过Javascript访问cookie。出于安全性目的进行设置是为了保护cookie,防止攻击者窃听浏览器和服务器之间的通信通道。但是,窃听并不是获取Cookie的唯一攻击手段。攻击者可以利用XSS漏洞来窃取身份验证cookie。事实证明,可以使用HttpOnly标志来解决此问题。

有关更多信息-https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html