使用omniauth-facebook登录设计

时间:2013-06-05 13:54:46

标签: devise omniauth

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我看到了重定向处理程序的一些技巧,但我认为应该有更好的决定......

1 个答案:

答案 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