2013-06-05 55 views
0

Ryan Bates給出了很好的截屏視頻http://railscasts.com/episodes/360-facebook-authentication如何使用「omniauth-facebook」gem。但有一些問題:使用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爲時已晚,在控制器的行動非標準設計AUTH保護:

before_filter :authenticate_user!, :except => [:index, :show] 

所以它重定向到的登錄頁中,甚至@current_user是aviable在視圖中...

也許任何人都知道如何解決它?

PS我看到重定向處理一些小技巧,但我覺得應該有更好的決策...

回答

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