Ruby on Rails, Angularjs: восстановление сессии

Я меняю значение в session в контроллере API, но он не отражает в следующий раз значение этой переменной в session взято. Вот api-контроллер...

module Api
    module V0
        class RecommendationsApiController < ApplicationController

           def x
              r1 = session[:last_id]
              r2 = some_function(r1)
              session[:last_id] = r2 
              #doesn't reflect in the session next time this same function is called, and the old value is shown
              #though checking the value of session at this point shows the right value been set in the @delegate part of the session

           end
        end
    end
end

это session_store.rb

Application.config.session_store :cookie_store, key: '_session_name'

application_controller.rb

  protect_from_forgery

  after_filter :set_csrf_cookie_for_ng

  def set_csrf_cookie_for_ng
    cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
  end

  protected

  def verified_request?
    super || form_authenticity_token == request.headers['X-XSRF-TOKEN']
  end

это websiteApp.run функция.

var csrf_token = $cookies['XSRF-TOKEN'];
$http.defaults.headers.common['X-XSRF-TOKEN'] = csrf_token;

Я пытался установить токен внутри config, но config блок не имеет $cookies, Так пытался установить headers внутри run,

Пожалуйста, помогите.

1 ответ

Вы отказались от проверки CSRF для этого действия? если нет, то, вероятно, происходит то, что rails очищает сессию по соображениям безопасности. Вы должны деактивировать его только для определенных действий:

protect_from_forgery :except => :my_action

или в этом случае

protect_from_forgery :except => :x
Другие вопросы по тегам