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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA