红宝石 – Sinatra清除会话

前端之家收集整理的这篇文章主要介绍了红宝石 – Sinatra清除会话前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
enable :sessions
set :session_secret,'secret'

post '/login' do
        session[:loggedInUser] = jsondata['username'].to_s
        puts session[:loggedInUser] + " is the session"
end

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

get '/debug' do
    session.inspect
end

在那里但是这里出现了这个问题.后来我再去另一个帖子请求:

post '/foo' do
    # do nothing
end

会话被清除.

为什么?这是一个bug吗?

编辑

我缩小了问题:我通过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

Sinatra FAQ

If you need to set additional parameters for sessions,like expiration
date,use Rack::Session::Cookie directly instead of enable :sessions:

解决方法

我正在遭受与你同样的问题:会议在职后被清除.

我不知道为什么这样工作,但这是我的解决办法:

#enable :sessions
use Rack::Session::Cookie,:key => 'rack.session',:path => '/',:secret => 'your_secret'

我真的只是使用Rack :: Session :: Cookie …替换了enable:sessions位,现在全世界都很好.

原文链接:https://www.f2er.com/ruby/272603.html

猜你在找的Ruby相关文章