Я использую devise и создаю логин через Facebook, используя omniauth, но у меня проблема с утратой доступа к вспомогательным методам devise, таким как current_user и user_signed_in?методы не работают.
EDIT
AuthenticationController
def create
omniauth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(omniauth["provider"], omniauth["uid"]) || User.create_with_omniauth(omniauth)
session[:user_id] = user.id
redirect_to dashboard_path(user.id), :notice => "Signed in!"
end
redirect_to Метод панели управления USercontroller
UserController
before_filter :logged_in
def dashboard
@user = User.find(params[:id])
@comment = Comment.new
@comments = @user.comments.all.paginate(:page => params[:page], :per_page => 5)
end
, поэтому здесь элемент управления должен перейти на панель мониторингаметод после проверки метод logged_in в ApplicationController
метод logged_in в ApplicationController
Application Controller
def logged_in
if user_signed_in?
return true
else
redirect_to root_path
flash[:message] = "please login"
end
end
при входе в систему через facebook следующий код, сгенерированный на консоли
Started GET "/users/52/dashboard" for 127.0.0.1 at Thu Mar 29 12:51:55 +0530 2012
Processing by UsersController#dashboard as HTML
Parameters: {"id"=>"52"}
Redirected to http://localhost:3000/
Filter chain halted as :logged_in rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.0ms)
в приведенном выше элементе управления кодом выполняется рендеринг из метода logged_in в root_path, но он должен отображать dashboard_path
Итак, я предполагаю, что User_signed_in?помощник не работает, я также использую current_user вместо того, чтобы генерировать ту же ошибку