Redis adapter for Guardian DB.
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
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
.
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.