Omniauth Facebook的before_filter?

时间:2013-05-21 18:42:53

标签: ruby-on-rails authentication omniauth

对于设计,可以很容易地在控制器中使用Before_filter。

出于某种原因,我无法让这个用于Omniauth_facebook Gem。我在Facebook Omniauth上关注了Railscast,也是

 before_filter :authenticate

  def authenticate
   redirect_to :login unless User.find_by_provider_and_uid(auth["provider"], auth["uid"])
 end
 end

但是我收到了错误:

   NameError in PostsController#new

    undefined local variable or method `auth' for #<PostsController:0x007f9fbfa7ee58>

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

找不到名为auth的变量。所以你需要检查auth变量是否在某处初始化。根据我的观点,OmniAuth Facebook gem将经过身份验证的数据存储在请求环境中。请参阅:https://github.com/mkdynamic/omniauth-facebook#auth-hash

before_filter将在提供请求之前执行。因此可能导致问题。

希望有所帮助!!!

答案 1 :(得分:0)

我认为您所使用的身份验证变量是request.env [“omniauth.auth”]