【发布时间】:2012-01-22 23:58:12
【问题描述】:
我目前正在开发一个 facebook 应用程序,该应用程序需要用户登录才能访问该应用程序。
我在application_controller 上有一个before_filter 来检查用户是否已登录,如果没有将他们重定向到正确的登录路径。
这是目前为止的代码:
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 的过程也有一个回调,我怀疑这是导致循环的原因。是否有更好的方法来确保用户被登录或其他方法来实现我的想法?
我目前正在使用
导轨 3.1.3,
红宝石 1.9.3,
omniauth-facebook 1.2.0,
全域认证 1.0.2
【问题讨论】:
-
Hrm,
before_Filter-- 我现在才注意到拼写错误。是否像修复拼写错误一样简单?或者这段代码是重新输入的而不是复制粘贴的? (请不要重新输入。)
标签: ruby-on-rails ruby-on-rails-3 facebook omniauth