Plug.Session.COOKIE

Parsed documentation:
View on GitHub
Stores the session in a cookie.

This cookie store is based on `Plug.Crypto.MessageVerifier`
and `Plug.Crypto.Message.Encryptor` which encrypts and signs
each cookie to ensure they can't be read nor tampered with.

Since this store uses crypto features, it requires you to
set the `:secret_key_base` field in your connection. This
can be easily achieved with a plug:

    plug :put_secret_key_base

    def put_secret_key_base(conn, _) do
      put_in conn.secret_key_base, "-- LONG STRING WITH AT LEAST 64 BYTES --"
    end

## Options

  * `:encryption_salt` - a salt used with `conn.secret_key_base` to generate
    a key for encrypting/decrypting a cookie.

  * `:signing_salt` - a salt used with `conn.secret_key_base` to generate a
    key for signing/verifying a cookie;

  * `:key_iterations` - option passed to `Plug.Crypto.KeyGenerator`
    when generating the encryption and signing keys. Defaults to 1000;

  * `:key_length` - option passed to `Plug.Crypto.KeyGenerator`
    when generating the encryption and signing keys. Defaults to 32;

  * `:key_digest` - option passed to `Plug.Crypto.KeyGenerator`
    when generating the encryption and signing keys. Defaults to `:sha256`;

  * `:serializer` - cookie serializer module that defines `encode/1` and
    `decode/1` returning an `{:ok, value}` tuple. Defaults to
    `:external_term_format`.

  * `:log` - Log level to use when the cookie cannot be decoded.
    Defaults to `:debug`, can be set to false to disable it.

## Examples

    # Use the session plug with the table name
    plug Plug.Session, store: :cookie,
                       key: "_my_app_session",
                       encryption_salt: "cookie store encryption salt",
                       signing_salt: "cookie store signing salt",
                       key_length: 64,
                       log: :debug
No suggestions.
Please help! Open an issue on GitHub if this assessment is incorrect.