В настоящее время я разрабатываю приложение facebook, в котором пользователь должен будет войти в систему до того, как сможет получить доступ к приложению.Redirect loop with Rails & Omniauth on before_filter
У меня есть before_filter
на application_controller
, чтобы проверить, зарегистрирован ли пользователь и если не перенаправить его на правильный путь.
Это код до сих пор:
Application Controller
before_filter :check_sign_in
def check_sign_in
unless user_signed_in?
redirect_to signin_path
end
private
def current_user
begin
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue Mongoid::Errors::DocumentNotFound
nil
end
end
def user_signed_in?
return true if current_user
end
У меня есть мой routes.rb
я следующий за signin_path
match '/signin' => 'sessions#new', :as => :signin
Моя sessions#new
действие выглядит следующим образом
def new
redirect_to '/auth/facebook'
end
Проблема под рукой, хотя с этим я получаю редирект ошибки цикла, на котором читаются следующим образом
Этот сайт имеет петлю перенаправлять
Веб-страница http://localhost:3000/signin привела к избыточному количеству переадресаций. Очистка файлов cookie для этого сайта или разрешение сторонних файлов cookie может устранить проблему. Если нет, возможно, это проблема с конфигурацией сервера и не проблема с вашим компьютером.
Это, похоже, более чем вероятно, потому что входной сигнал в facebook также имеет обратный вызов, который, как я подозреваю, вызывает то, что вызывает цикл. Есть ли лучший подход для обеспечения регистрации пользователя или другого метода для достижения того, что я имел в виду?
настоящее время я использую Rails 3.1.3,
Руби 1.9.3,
OmniAuth-facebook 1.2.0,
OmniAuth 1.0.2
Hrm, 'before_Filter' - Я сейчас замечаю орфографическую ошибку. Это так же просто, как исправить вашу орфографическую ошибку? Или этот код был перепечатан, а не скопирован и вставлен? (Пожалуйста, не перепечатывайте.) – sarnold