Квартира current_tenant сбрасывается в ‘public’ после неудачного входа в систему devise

#ruby-on-rails #devise #rack #apartment-gem #rack-middleware

#ruby-on-rails #devise #стойка #квартира-драгоценный камень #rack-промежуточное ПРОГРАММНОЕ обеспечение

Вопрос:

Я использую Devise для аутентификации и Apartment для поддержки нескольких арендаторов в приложении SAAS.

После неудачного входа в систему devise «перенаправляет» на страницу входа в систему (Users::SessionsController #new), значение Apartment::Tenant.current которой ранее было установлено в TenantElevator промежуточном программном обеспечении, возвращается к значению по умолчанию «public».

Это происходит потому, что Devise фактически не перенаправляет на страницу входа в систему, а вызывает FailureApp (который отображает страницу входа в систему) с новым rack env и возвращает его ответ. Новое приложение rack не имеет TenantElevator промежуточного программного обеспечения, поэтому арендатор не задан в приложении rack.

У кого-нибудь есть идеи, как это исправить? Может быть, я могу добавить промежуточное программное обеспечение TenantElevator в приложение сбоя?

Комментарии:

1. Может ли это быть просто очистка сеанса Devise при неудачном входе в систему?

2. @TarynEast я сомневаюсь в этом. Драгоценный камень квартиры не сохраняет арендатора в сеансе.

3. Повторная постановка одного и того же вопроса, чтобы поднять его на вершину, не является хорошим поведением.

4. github.com/influitive/apartment#middleware-considerations

5. @max Это другой вопрос, я отредактировал это несколько минут назад, поскольку убедился, что это проблема с промежуточным программным обеспечением. Здесь обсуждается проблема, с которой столкнется любой, кто использует Devise и Apartment gem. Другой спрашивает, как добавить промежуточное программное обеспечение для разработки приложения с ошибкой, которое, я полагаю, может быть полезно для исправления этого.