simple_authentication_tokenというgemをRailsのAPIサーバーで利用するときの注意点です。
目次
基本的な使い方
基本的な使い方は過去の記事を参考にしてください!
deviseのセッション機能に要注意
simple_authentication_tokenというgemはdevise利用を前提にしています。
通常deviseではサインアップやログインすると、セッションにユーザー情報を保存して認証機能を提供します。しかし、APIで利用するときにはuser_tokenやuser_tokenをリクエストパラメータで付与することになると思います。
しかし、通常のようにdeviseのセッション機能を利用するとuser_emailやuser_tokenをパラメータに付与しなくても認証が通ってしまいます。
ですので、APIでtokenで認証したいときは、registrations_controllerとsession_controllerをoverrideしてsessionを無効にする必要があります。
そのためにはsign_in(current_user, store: false)
のようにstore: false
オプションをつければsession機能を無効にできます。
acts_as_token_authentication_handler_for Userの認証
acts_as_token_authentication_handler_for Userと記述してuser_emailとuser_tokenの認証を通れば、current_userに値がセットされます。
セットされなかったときの対処としてregistration_controllerではthrow(:warden, scope: :user) unless user_signed_in?
とactionの前に聞いてあげると例外を投げることができます。
使うとかなりコードがすっきり書ける
今回simple_authentication_tokenのgemを使うにあたって、tokenのあり方、deviseの内部構造までかなり深く調べました。
ちょっと癖があるgemですが、これを使うとかなりcontrollerのコードがすっきり書けます。
deviseのwardenあたりも勉強したいところです。
コメントを残す