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