Ryan Bates提供了精彩的截屏视频http://railscasts.com/episodes/360-facebook-authentication如何使用" omniauth-facebook"宝石。但是有一些问题:
#application_controller.rb
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
为控制器中的操作设置@current_user对于标准的Devise auth保护来说太迟了
before_filter :authenticate_user!, :except => [:index, :show]
所以它重定向到登录页面,甚至@current_user在视图中也是可用的......
也许有人知道如何修复它?
PS我看到了重定向处理程序的一些技巧,但我认为应该有更好的决定......
答案 0 :(得分:0)
我找到了使用标准设计方法登录的简单方法。基于本教程,只需在sessions_controller中设置代码:
#sessions_controller.rb
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
sign_in user
redirect_to root_url
end
end
您可以从应用程序控制器中删除它:
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user