web-dev-qa-db-ja.com

ApplicationControllerでCookieを設定する方法は?

ApplicationControllerでCookieを設定する必要がありますが、方法がわかりません。私はCookieを使用してみました-何もありません、ActionController :: Cookiesを使用しています-何もありません。 Cookieの設定と取得以外に必要なものはありませんが、必要なのはApplicationControllerに設定することです。

編集:

答えが見つかりました:request.cookies['help'] = 'yes'

29
AndrewShmig

アプリケーションコントローラーで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を設定するときに:domainを指定した場合、Cookieを削除するときにもドメインを指定する必要があることに注意してください。

例えばcookies[:user_name] = "david"

41
amit_saxena

しばらくの間使いたいCookieを簡略化できます

cookies.permanent[:some_cookie] = "Gingerbread"
16
jacklin

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,
}

path-このCookieが適用されるパス。デフォルトはアプリケーションのルートです。

secure-このCookieがHTTPSサーバーにのみ送信されるかどうか。デフォルトはfalseです。

httponly-このCookieにスクリプトまたはHTTPのみでアクセスできるかどうか。デフォルトはfalseです。 Cookie httponlytrueに設定されている場合、Javascriptを介してCookieにアクセスできます。これは、攻撃者がブラウザとサーバー間の通信チャネルを盗聴することからCookieを保護するために、セキュリティ上の目的で設定されます。ただし、Cookieを取得する攻撃方法は盗聴だけではありません。攻撃者はXSSの脆弱性を利用して認証Cookieを盗むことができます。 HttpOnlyフラグを使用してこの問題を解決できることがわかりました。

詳細情報- https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html

0
Vivek Kumar