В настоящее время я занимаюсь разработкой приложения для Facebook, для которого пользователю необходимо войти в систему, прежде чем он сможет получить доступ к приложению.
У меня есть 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,
Ruby 1.9.3,
omniauth-facebook 1.2.0,
omniauth 1.0.2