こんにちは、@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.
生成コマンドのプロジェクトが活発で、非常に期待ができますね!コマンド一発で整う世界がきてほしいです🤤