LoginSignup
1
1

More than 5 years have passed since last update.

devise_token_authにパッチを当てた話

Last updated at Posted at 2016-06-23

概要

Railsアプリをサブディレクトリで動かすとdevise_token_authがうまく動作しなくなったのでパッチを当てた。

パッチの場所

詳細

動機

Railsアプリ(JSONAPIオンリー)をnginxのリバースプロキシの背後で動かそうとすると、グーグルでのログインができなくなった。

環境

使用しているgem(関係がありそうなもののみ抜粋):

  • rails (4.2.6)
  • devise (4.1.1)
  • omniauth-google-oauth2 (0.4.1)
  • devise_token_auth (0.1.37)

いずれも設定はほとんど初期値のまま。

原因

調査の結果、Railsアプリをサブディレクトリで動かしており、そのサブディレクトリの部分がdevise_token_authが生成するリダイレクト先URLに含まれていないことが原因だと判明。
Railsにはサブディレクトリで動作させるためのオプションがあるのだが、devise_token_authのリダイレクトの書き方が絶対パスっぽい書き方になっており、サブディレクトリ部分を無視するようになっていた。
さらに、グーグルからリダイレクトされたあとの処理でもrequest.host_with_portなどを使ってURLを生成しており、そこでもサブディレクトリ部分が無視されていた。

解決策

オプションではどうにもならなかったのでパッチを当てた。
パッチの内容は該当コミットを参照。

参考資料

http://qiita.com/61503891/items/732d9c123c39e35e97eb
http://guides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1