相关疑难解决方法(0)

Sinatra在帖子上清除会话

enable :sessions
set :session_secret, 'secret'

post '/login' do
        session[:loggedInUser] = jsondata['username'].to_s
        puts session[:loggedInUser] + " is the session"
end
Run Code Online (Sandbox Code Playgroud)

在这一点上,一切都很好.当我像这样阅读会话时:

get '/debug' do
    session.inspect
end
Run Code Online (Sandbox Code Playgroud)

它就在那里.但问题来了.当我稍后再次发送邮件请求时:

post '/foo' do
    # do nothing
end
Run Code Online (Sandbox Code Playgroud)

会话已清除.

为什么?这是一个错误吗?

编辑

我已经缩小了问题范围:我通过nginx代理通过Sinatra,http://app.local/backend这就是问题出现的时候.如果我通过http://localhost:4567它运行Sinatra 一切都按预期工作.

使用Rack::Session::Cookie而不是默认值enable :sessions:

use Rack::Session::Cookie, :key => "rack.session",
:path => "/backend"
# etc
Run Code Online (Sandbox Code Playgroud)

来自Sinatra FAQ:

如果您需要为会话设置其他参数,例如到期日期,请直接使用Rack :: Session :: Cookie而不是enable:sessions:

ruby sinatra

18
推荐指数
2
解决办法
4819
查看次数

标签 统计

ruby ×1

sinatra ×1