使用AuthLogic在ROR中创建会话后,Current_user为nil

时间:2011-03-14 22:20:21

标签: ruby-on-rails flex4 authlogic cairngorm

我在使用AuthLogic和current_user时遇到了一些问题。

我有一个使用Cairngorm框架作为前端的Flex4应用程序,以及使用Ruby On Rails作为后端。

我可以通过浏览器登录,只使用ROR。但是,当我通过我的Flex4应用程序尝试时,它将在第一次失败但第二次工作。

发生了什么,是在user_sessions_controller.rb里面我打电话给

self.current_user.to_xml;

第一次调用create动作时,current_user对象返回nil。我第二次调用它(没有重新启动服务器或浏览器),它将是当前正确的用户。

因此,这让我相信在创建操作中的render命令之后的某个时间设置了current_user。

如果我需要我的rails控制器在创建操作中返回当前用户,我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

只是遇到了完全相同的问题...不确定为什么会发生这种情况但是我试图在我的user_sessions_controller.rb中的create方法中调用current_user,按照以下方式解决...

  def create
    @user_session = UserSession.new(params[:user_session])

    if @user_session.save
      current_user = UserSession.find.user
      current_user.increment_login_count_for_current_memberships!
      flash[:notice] = 'Sign in successful.'
      redirect_to root_path
    else
      render action: "new"
    end
  end

希望这有帮助!

答案 1 :(得分:0)

这是因为帮助方法current_user通常被定义为before_action。这意味着,在会话创建之前使用之前,之前的操作没有运行。

我还使用了这个UserSession.find.user,这个用例完全没问题。

干杯, 尼古拉斯