加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

红宝石 – Sinatra清除会话

发布时间:2020-12-16 20:04:35 所属栏目:百科 来源:网络整理
导读:enable :sessionsset :session_secret,'secret'post '/login' do session[:loggedInUser] = jsondata['username'].to_s puts session[:loggedInUser] + " is the session"end 一切都很好,在这一点上.当我读这个会话时: get '/debug' do session.inspectend
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位,现在全世界都很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读