对于设计,可以很容易地在控制器中使用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>
有什么想法吗?
答案 0 :(得分:0)
找不到名为auth的变量。所以你需要检查auth变量是否在某处初始化。根据我的观点,OmniAuth Facebook gem将经过身份验证的数据存储在请求环境中。请参阅:https://github.com/mkdynamic/omniauth-facebook#auth-hash。
before_filter将在提供请求之前执行。因此可能导致问题。
希望有所帮助!!!
答案 1 :(得分:0)
我认为您所使用的身份验证变量是request.env [“omniauth.auth”]