Я хотел бы опубликовать свое приложение для выбранного набора лиц для частной бета-версии. Я создал поддомен для этой задачи: beta.company.com.Rails 3 subdomain
Приложение работает как ожидалось на моей рабочей станции, но когда я нажимаю его на сервер, приложение постоянно направляет обратно на страницу аутентификации. FYI, я использую declarative-authorization, authlogic и Passenger.
routes.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 # создать, not_authorized) работают как и ожидалось Anon. Пользователь
- приложение работает, как ожидалось на моей рабочей станции
Когда я смотрю на production.log, я вижу запись как:
Обработка по UsersController # индекс как HTML Разрешение отказано: Не найдено совпадающих правил для индекса для # @role_symbols = [: guest]> (роли [: guest], privileges [: index,: read,: manage], context: users). перенаправлено в http://beta.company.com/authenticate
** редактировать **
С одной стороны, нет UsersController # индекс действия, и если был, то анонимный пользователь не будет иметь к нему доступ. Я смущен тем, почему он пытается направить туда вообще (вместо корневого URL-адреса, где он должен идти после успешной проверки подлинности).
Это похоже на проблему маршрутизации, относящуюся к поддоменам, но я не могу быть уверен.
перечитать эту «ошибку» более внимательно. есть действие индекса UserController # И анонимный пользователь НЕ должен иметь к нему доступ. на первый взгляд, я подумал, что он читает индекс UserSessionController #, который является действием, которого не существует.
сейчас кажется, что аутентифицированный пользователь не создается и не сохраняется и, следовательно, перенаправляется обратно на новое действие UserSession # (путь аутентификации 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: migrate), перезапустил Apache ($ touch tmp/restart.txt), очистил кеш браузера и перезапустил браузер.
Сессия была успешно добавлена в таблицу сеансов, но у меня все еще возникает проблема.
**/редактировать II **
Мысли очень ценятся.
Я предполагаю, что я не читал журнал достаточно близко - отредактированный пост. Как установить cookie в бета-домене (должен отличаться от того, что я делаю сейчас)? Успешная аутентификация делает маршрут «root_url». Вы предполагаете, что вместо этого он направляется к user_path, правильно? – craig
настроил session_store.rb как MyApp :: Application.config.session_store: cookie_store,: key => '_MyApp_session',: domain =>: all Restarted. Без изменений. – craig