У меня есть отдельные модели для пользователей и администраторов Devise. Я также использую поддомен в стиле Basecamp. Все работает хорошо, за исключением нескольких контроллеров и действий, где мне нужно иметь возможность аутентифицироваться как пользователь или как администратор.
В настоящее время у меня есть authenticate_user! установить в моем application_controller.rb, и я пропускаю его с skip_before_filter для тех контроллеров и действий, к которым только администраторы должны иметь доступ.
К сожалению, я не могу просто указать требование аутентификации на каждом контроллере, так как мне все еще потребуются некоторые контроллеры и действия для доступа как пользователя, так и администратора.
Я попробовал несколько вещей безрезультатно. Кажется, что если я перееду authenticate_user! и authenticate_admin! в какую-то логику обнаружения поддоменов, которую он не может обработать. В основном:
current_subdomain = request.subdomains.first
if current_subdomain == 'admin'
authenticate_admin!
else
authenticate_user!
end
В какой-то момент я смог заставить его выполнить попытку аутентификации, но по какой-то причине он не смог исключить необходимость аутентификации контроллера сеанса, что привело к циклу перенаправления (впервые для меня с Ruby!).
Я понимаю, что мог бы добавить к своему Пользователю поле, обозначающее статус администратора, но приложение требует большего разделения полномочий между Пользователем и Администратором, чем это позволяет, за исключением нескольких контроллеров и действий.
- Рубин 1.9.2
- Рельсы 3.0.3
- Разработка 1.1.3