如何在ApplicationController中设置cookie?

And*_*mig 29 cookies ruby-on-rails applicationcontroller

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

编辑:

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

ami*_*ena 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')
Run Code Online (Sandbox Code Playgroud)

请注意,如果在设置cookie时指定:domain,则还必须在删除cookie时指定域.

例如 cookies[:user_name] = "david"

  • 澄清:`signed`不会加密密钥以避免查看,只是修改.`encrypted`将同时做到这两点 (4认同)
  • 您还可以使用`cookies.signed [:key] = ...`来加密cookie值,以防止外部修改. (2认同)

jac*_*lin 16

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

cookies.permanent[:some_cookie] = "gingerbread"
Run Code Online (Sandbox Code Playgroud)


Viv*_*mar 7

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

cookies[:appToken] = {
  value: 'IOWQ92038192319JKNJKW',
  expires: 1.year.from_now,
  domain: 'www.example.com',
  path: '/admin',
  secure: false,
  httponly: false,
}
Run Code Online (Sandbox Code Playgroud)

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

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

httponly- 此 cookie 是否可通过脚本访问或仅通过 HTTP 访问。默认为false. 如果 cookiehttponly设置为true,则无法通过 JavaScript 访问 cookie。这是出于安全目的而设置的,以保护 cookie 免遭攻击者窃听浏览器和服务器之间的通信通道。然而,窃听并不是获取 cookie 的唯一攻击途径。攻击者可以利用XSS漏洞窃取身份验证cookie。原来HttpOnly可以用flag来解决这个问题。

欲了解更多信息 - https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html