#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. Другой спрашивает, как добавить промежуточное программное обеспечение для разработки приложения с ошибкой, которое, я полагаю, может быть полезно для исправления этого.