こんにちは、@koga1020です。

今日はなんとなく思い立って、PhoenixにGuardianを導入してREST APIでトークンベースでの認証を行うサンプルを書いてみたので晒しておきます。

ほんとはコードの解説まで頑張って書こうと思いましたが、力尽きたのでまたの機会にしますw

リポジトリ

リポジトリ:koga1020/auth_api_demo

内容

  • メールアドレスとパスワードでサインアップ/サインインを行う
  • サインアップ/サインインに成功したら、access tokenを返却する
  • access tokenをAuthorizationヘッダーに含めてリクエストし、ログインユーザーの情報を取得する

というシンプルな例です。開発用DBを立てるdocker-composeもおいているので、興味がある方はサクッと試していただけると思います。

こちらの記事を参考に、argon2_elixirを利用した書き方に変えています。

本来の実装であれば、

  • Guardian DBを導入し、トークンの無効化に対応できるようにする
  • refresh_tokenを返却し、access_tokenが期限切れになった場合のリフレッシュに対応する

などの機能も必要になってきますね。これらの例もいずれ書いてみたいと思います。

コードに関して

  • ここ違うくない?
  • こうした方がベターじゃない?

などあればTwitterなりIssueなりで議論してもらえると嬉しいです👏

P.S.

生成コマンドのプロジェクトが活発で、非常に期待ができますね!コマンド一発で整う世界がきてほしいです🤤

https://github.com/aaronrenner/phx_gen_auth