Я хотел бы опубликовать свое приложение для избранного круга лиц для частного бета-тестирования. Для этой задачи я создал поддомен: beta.company.com.
Приложение работает, как и ожидалось, на моей рабочей станции, но когда я отправляю его на сервер, приложение постоянно возвращается на страницу аутентификации. К вашему сведению, я использую декларативную авторизацию, authlogic и Passenger.
маршруты.rb:
#Application controller
match "/not_authorized", :to => "application#not_authorized", :as => :not_authorized
#UserSessions controller
match "/quit", :to => "user_sessions#destroy", :as => :quit
match "/authenticate", :to => "user_sessions#new", :as => :authenticate
resources :user_sessions, :only => :create
#Users controller
match "/enroll", :to => "users#new", :as => :enroll
# root url
root :to => "users#index"
Симптомы:
- анонимные маршруты (например, user_sessions#create, not_authorized) работают так, как ожидалось для anon. Пользователь
- приложение работает как положено на моей рабочей станции
Когда я смотрю на production.log, я вижу запись вроде:
Обработка UsersController#index как HTML Отказано в доступе: не найдено соответствующих правил для индекса для # @role_symbols=[:guest]> (роли [:guest], привилегии [:index, :read, :manage], контекст :users). Перенаправлено на http://beta.company.com/authenticate.
** редактировать **
Во-первых, нет действия UsersController#index, а если бы оно было, анонимный пользователь не имел бы к нему доступа. Я не понимаю, почему он вообще пытается направить туда (вместо корневого URL-адреса, куда он должен идти после успешной аутентификации).
Похоже, это проблема маршрутизации, связанная с поддоменом, но я не уверен.
перечитайте эту "ошибку" более внимательно. существует действие UserController#index, И анонимный пользователь НЕ должен иметь к нему доступ. на первый взгляд я подумал, что это UserSessionController#index, а это действие, которого не существует.
теперь кажется, что аутентифицированный пользователь не создается и не сохраняется и, следовательно, перенаправляется обратно к действию UserSession#new (путь аутентификации AKA).
** / редактировать **
** изменить II **
Я изменил cookie_store на active_record_store:
# cookie store
# MyApp::Application.config.session_store :cookie_store, :key => '_myApp_session'
# active-record store
MyApp::Application.config.session_store :active_record_store
Добавил таблицу ($ rake db:sessions:create), выполнил миграцию ($ rake db:migrate), перезапустил Apache ($ touch tmp/restart.txt), очистил кеш браузера, затем перезапустил браузер.
Сеанс был успешно добавлен в таблицу сеансов, но проблема все еще возникает.
** / редактировать II **
Мысли очень ценятся.