Home

Awesome

GuardianRedis

Hex.pm Build Status

Redis adapter for Guardian DB.

Installation

You can use GuardianRedis in case you use Guardian library for authentication and Guardian.DB library for JWT tokens persistence.

If available in Hex, the package can be installed by adding guardian_redis to your list of dependencies in mix.exs:

def deps do
  [
    {:guardian_redis, "~> 0.2.0"}
  ]
end

Configuration

All you need to install Guardian DB as per Guardian.DB README and just use GuardianRedis.Adapter as a adapter in settings.

config :guardian, Guardian.DB,
       adapter: GuardianRedis.Adapter # Add this Redis adapter module

Add GuardianRedis.Redix to your supervision tree:

(Note: If this is not configured you will get a no process error when storing or revoking tokens!)

defmodule MyApp.Application do

  # ...

  defp my_app_otp_apps() do
    children = [
      MyApp.Repo,
      GuardianRedis.Redix
    ]
  end
end

Apart from this please set up Redis configuration:

config :guardian_redis, :redis,
  host: "127.0.0.1",
  port: 6379,
  pool_size: 10

More options are available as described in GuardianRedis.Redix.

Implement Guardian.DB adapter for a different storage

Initially, Guardian.DB was aimed to store and operate JWT tokens in a PostgreSQL database. Sometimes round trip to Postgres database is expensive so this is why this Redis adapter was born. In case you want to implement a possibility for Guardian.DB to use different storage, e.g. ETS (or MySQL), you need to implement Guardian.DB.Adapter behavior. Thanks to @aleDsz it's quite simple: https://github.com/ueberauth/guardian_db/blob/master/lib/guardian/db/adapter.ex

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/guardian_redis.