簡體   English   中英

使用AuthLogic在ROR中創建會話后,current_user為nil

[英]Current_user nil after creating a session in ROR with AuthLogic

我在AuthLogic和current_user方面遇到了一些問題。

我有一個使用Cairngorm框架作為前端,使用Ruby On Rails作為后端的Flex4應用程序。

僅使用ROR時,我可以通過瀏覽器登錄。 但是,當我通過Flex4應用程序嘗試它時,它將第一次失敗,但是第二次可以工作。

發生了什么,在user_sessions_controller.rb內,我打電話給

self.current_user.to_xml;

我第一次調用create動作時,current_user對象返回nil。 我第二次調用它(無需重新啟動服務器或瀏覽器),它將是正確的當前用戶。

因此,這使我相信在我的create動作中的render命令之后的某個時間設置了current_user。

如果我需要用rails控制器在create動作中返回當前用戶,我該怎么做呢?

只是有完全相同的問題...不確定為什么會發生這種情況,但是我試圖在我的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

希望這可以幫助!

這是因為輔助方法current_user通常被定義為before_action。 這意味着,在會話創建過程中使用之前操作之前,未執行該操作。

我還使用了這個UserSession.find.user,它非常適合此用例。

干杯,尼克拉斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM