2017-10-04 54 views
2

我正在與一個Rails應用程序,並試圖做一個與rails遠程:一個ajax請求。該請求應該觸發我的一個控制器操作。Rails沒有保持會話數據,當做與遠程=真正的ajax

<%= form_tag my_action_path(@version), {remote: true} do %>

在應用控制器有一個before_filter回調執行該動作之前,其執行。它檢查會話的用戶ID,像這樣:

if session[:user_id]

檢查失敗,強制重定向。當我檢查session[:user_id]它是零,我猜這意味着會話cookie不通過。我有一堆js對控制器執行ajax,有趣的是他們都工作,通過支票。所以有兩個問題:

我是否需要一些額外的代碼來實現遠程:真正的工作?有沒有設置會話cookie或smth的方法?

這是驗證未經授權的Ajax請求的正確方法,還是有更好的方法。

我使用我使用Rails的設計4

感謝

回答

2

,所以我不知道這是否是直接適用,但是,你也必須通過authenticity_token形式標籤以及。

<%= form_tag my_action_path(@version), {remote: true}, authenticity_token: true do %> 

它可能是單獨的,但類似。我認爲這隻會對你有用。

另一件需要考慮的事情是查看一個可以工作的表單,並查看在控制檯中發佈到服務器的數據,因爲rails會回傳傳遞給服務器的數據,您可以使用它來幫助我們調試。它應該有session_idauthenticity_token或類似的所有會話請求工作(您在登錄時所做的任何事情)。