我在我的ruby项目中使用了sinatra会话。登录后,我在会话[:name] 中写下用户名。 如果用户调用某种API方法,我会验证会话[:名称] ,如果此值不为空,则会从服务器获得响应。注销后我清除了这个值。 我的代码:
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 后,我会收到服务器 401 Unauthorized 的响应。 为什么会这样? 以及如何解决它?
答案 0 :(得分:2)
它不是一个错误。每个浏览器自己创建会话。并且您需要在新浏览器中打开页面后登录。
答案 1 :(得分:1)
这不是一个错误,它是预期的。会话仅存在于一个浏览器上。启动Firefox时,您将启动一个新会话。 :)