会话中的Ruby和Sinatra问题

会话中的Ruby和Sinatra问题,ruby,session,sinatra,Ruby,Session,Sinatra,我在ruby项目中使用了sinatra会话。登录后,我在会话[:name]中写入用户名。 如果用户调用某个API方法,我将验证会话[:name],如果该值不为空,他将从服务器获得响应。注销后,我清除此值。 我的代码: use Rack::Session::Cookie, :expire_after => 86400 get '/login' do session[:name] = params[:username] end get '/logo

我在ruby项目中使用了sinatra会话。登录后,我在会话[:name]中写入用户名。 如果用户调用某个API方法,我将验证会话[: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
这段代码运行良好。但如果我从一个浏览器(即谷歌浏览器)登录,然后打开另一个浏览器(即Mozilla FireFox)并调用/check_session,我会收到服务器的响应。 为什么会发生这种情况?
如何修复它?

这不是一个bug。每个浏览器创建自己的会话。在新浏览器中打开页面后,您需要登录。

这不是错误,这是意料之中的。会话只存在于一个浏览器上。启动Firefox时,您将启动一个新会话。:)