Rails 3 disabling session cookies

前端 未结 10 1978
梦如初夏
梦如初夏 2020-11-30 00:06

I have RESTful API written on RoR 3. I have to make my application not to send \"Set-Cookie header\" (clients are authorizing using auth_token parameter).

I have tri

10条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-30 00:40

    Try this instead

    after_filter :skip_set_cookies_header
    
    def skip_set_cookies_header
      session.instance_variable_set('@loaded', false)
    end
    

    Or even better, always remove Set-Cookie header when session data did not change

    before_filter :session_as_comparable_array # first before_filter
    after_filter :skip_set_cookies_header      # last  after_filter
    
    def session_as_comparable_array(obj = session)
      @session_as_comparable_array = case obj
      when Hash
        obj.keys.sort_by(&:to_s).collect{ |k| [k, session_as_comparable_array(obj[k])] }
      when Array
        obj.sort_by(&:to_s).collect{ |k| session_as_comparable_array(k) }
      else
        obj
      end
    end
    
    def skip_set_cookies_header
      session.instance_variable_set('@loaded', false) if (@session_as_comparable_array == session_as_comparable_array)
    end
    

提交回复
热议问题