0

Ryan Bates 提供了很棒的截屏视频http://railscasts.com/episodes/360-facebook-authentication如何使用“omniauth-facebook” gem。但是有一些问题:

#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 为时已晚,无法对控制器中的操作进行标准设计身份验证保护:

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

所以它重定向到登录页面,即使@current_user 在视图中也是可用的......

也许有人知道如何解决它?

PS我看到重定向处理程序的一些技巧,但我认为应该有更好的决定......

4

1 回答 1

0

我找到了使用标准设计方法登录的简单方法。基于本教程,只需在 session_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
于 2013-06-05T15:05:51.840 回答