クッキー

Cookieを有効にする

花見は、「組み込まれているがインストールされていない」という考え方を適用します。Cookieは存在しているがアクティブにする必要がある機能です。

私たちのアプリケーション設定にはコメントを外す行があります。

# apps/web/application.rb
module Web
  class Application < Hanami::Application
    configure do
      # ...
      cookies true
    end
  end
end

これからは、応答ごとにクッキーが自動的に送信されます。

 

設定

この設定では、アプリケーションから送信するすべてのCookieに設定されるオプションを指定できます。

  • :domainStringnilデフォルトでは)、ドメイン
  • :pathStringnilデフォルトで)、相対URL
  • :max_ageIntegernilデフォルトで)、秒単位で表されるクッキーの持続時間
  • :secureBooleantrueデフォルトでSSLを使用している場合)、接続を保護するためにCookieを制限する
  • :httponlyBooleantrueデフォルトでは)、JavaScriptアクセスをクッキーに制限します

 

使用法

Cookieはハッシュのように動作します。値の読み取り、割り当て、削除ができます。

# apps/web/controllers/dashboard/index.rb
module Web::Controllers::Dashboard
  class Index
    include Web::Action

    def call(params)
      cookies[:b]         # read
      cookies[:a] = 'foo' # assign
      cookies[:c] = nil   # remove
    end
  end
end

値を設定するとき、クッキーはa Stringまたはa Hashを受け入れてインラインオプションを指定できます。一般的な設定が自動的に適用されますが、これらのオプションを使用して大文字と小文字を区別することができます。

 

# apps/web/application.rb
module Web
  class Application < Hanami::Application
    configure do
      # ...
      cookies max_age: 300 # 5 minutes
    end
  end
end

アクションから2つのクッキーを設定します。最初のものはアプリケーション設定を継承し、2つ目はデフォルト値を上書きします。

# apps/web/controllers/dashboard/index.rb
module Web::Controllers::Dashboard
  class Index
    include Web::Action

    def call(params)
      # Set-Cookie:a=foo; max-age=300; HttpOnly
      cookies[:a] = 'foo'

      # Set-Cookie:b=bar; max-age=100; HttpOnly
      cookies[:b] = { value: 'bar', max_age: 100 }
    end
  end
end