4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Deviseで認証失敗したときにApartmentでのDB切り替えが機能せず意図したDBを参照してくれない問題

Posted at

が発生したが、middleware の順番の問題だった

以下のように、Deviseが使用している middleware Warden::Manager より先に HogeElevator (ApartmentのカスタムElevator) を登録すると解決。

Rails.application.config.middleware.insert_before 'Warden::Manager', 'HogeElevator'

変更前の rake middleware

use Rack::Sendfile
use ActionDispatch::Static
(snip)
use Rack::ETag
use Warden::Manager      <==== Devise
use I18n::JS::Middleware
use Apartment::Reloader
use Bullet::Rack
use HogeElevator         <==== テナント切り替え
run HogeServer::Application.routes

上記のように Devise(Wardern) の後にテナント切り替えのmiddlewareが登録されている。

変更後

use Rack::Sendfile
use ActionDispatch::Static
(snip)
use Rack::ETag
use HogeElevator         <==== テナント切り替え
use Warden::Manager      <==== Devise
use I18n::JS::Middleware
use Apartment::Reloader
use Bullet::Rack
run HogeServer::Application.routes

変更後は、Apartmentでのテナント切り替えの動作後にDevise(Warden)が動作するようになった。

参考

4
4
0

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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?