Ruby 和 Sinatra 的会话问题

Ruby and Sinatra problems with session

我在我的 ruby 项目中使用了 sinatra 会话。登录后,我在 session[:name] 中写入用户名。 如果用户调用某些 API 方法,我会验证 session[:name] 并且如果此值不为空,他会从服务器获得响应。注销后我清除这个值。 我的代码:

 use Rack::Session::Cookie, :expire_after => 86400

    get '/login' do
        session[:name] = params[:username]
    end

    get '/logout' do
        session[:name] = ''
        return 'done'
    end

    error 401 do
      return '401 Unauthorized'
    end

    get '/check_session' do
        if session[:name].to_s.strip.length == 0 || session[:name].to_s!=params[:username]
            return 401
        end
        return session[:name]
    end

此代码运行良好。但是如果我从一个浏览器登录,即 Google Chrome,然后打开另一个浏览器,即 Mozilla FireFox 并调用 /check_session 我得到来自服务器的响应 401 未经授权。 为什么会这样? 以及如何修复它?

这不是错误。每个浏览器都创建自己的会话。并且需要在新浏览器打开页面后登录

这不是错误,这是正常现象。一个会话只存在于 one browser.When 你启动 Firefox,你开始一个新的会话。 :)