为什么session [:]在葡萄藤中不起作用?

Nin*_*Boy 2 ruby-grape ruby-on-rails-4

我正在使用Rails和Grape作为API.我只是好奇为什么session[:something]葡萄没有方法?我可以创建cookie,但也不能创建签名的cookie.它给我一个错误.

Rub*_*ith 9

Grape是一个用于构建API的轻量级框架,当您向Grape API端点发送请求时,响应不会通过所有Rails中间件,而是通过一组精简的Rack中间件.因此,Grape专门用于构建API,您可以根据需要插入所需的中间件.主要目标是使API尽可能轻量级,并提高速度和性能.

如果要在Rails上启用安装在Rails上的会话,则需要使用ActionDispatch::Session::CookieStore中间件.

class API < Grape::API
  use ActionDispatch::Session::CookieStore

  helpers do
   def session
     env['rack.session']
   end
  end

  post :session do
   session[:foo] = "grape"
  end

  get :session do
    { session: session[:foo] }
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以将grape_session gem用于上述目的.

如果您想在没有Rails中间件的情况下在Rack应用程序中使用会话的默认方式,请使用Rack中Rack::Session::Cookie可用的默认中间件.

  • 如果要与Rails“共享”会话,则也需要像这样指定密钥:`使用ActionDispatch :: Session :: CookieStore,密钥:'_XXX_session'` (2认同)