地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

APIでsimple_authentication_tokenを使うときの注意点

スポンサーリンク

github.com

simple_authentication_tokenというgemをRailsのAPIサーバーで利用するときの注意点です。

基本的な使い方

基本的な使い方は過去の記事を参考にしてください!

www.tom08.net

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あたりも勉強したいところです。