Task.9 ではユーザー認証に関わる機能の実装を行います。
実装する前に、ユーザーの認証にはいくつか種類があることを知っておく必要があります。
JWT 認証は広い意味ではトークン認証のうちのひとつですが、そのなかでも少し特殊なものなので分けています。(「ふーん、そうなんだ」くらいの理解で OK です。)
そこで、ユーザー認証 gem である devise gem の拡張である devise_token_auth を使って、ユーザー認証機能を実装することにします。この gem を使うと、API のトークン認証機能を実装することが可能になります。先ほど挙げた中だと 2 にあたる認証ですね。
まとめると 「devise_token_auth を使うと、トークン認証を使ったユーザー認証機能が実装できる」 わけです。
今回実装するのは、 「devise_token_auth を使ってユーザーの新規登録を行う API の実装」 なのですが、ユーザーの新規登録やログインをしたときに、devise_token_auth が、ユーザー認証に必要な「トークン情報」を返すようになっています。
このトークン情報を「ログイン後しか使えない API を使う」ときに利用します。例えば、Qiita であればログインしているユーザーだけが、そのユーザーの情報(例えばアイコン)を変更できますが、このように、ログインユーザーしか変更できない API を呼び出したりするには、個人を特定するトークン情報をもとに、ログイン状況を判定するんですね。
トークン情報は 「HTTP リクエストを投げる際に、ヘッダーという情報に載せて API を呼び出す」 という使い方をします。あとは、そのトークンが正しいかどうかを devise_token_auth がチェックしてくれるわけです。
なお、HTTP リクエストヘッダーは、以下のように Postman でも指定できるようになっています。
