我在我的ruby项目中使用了sinatra会话。登录后我写会话[:name]用户的名字。 如果用户调用某个API方法,我会验证会话[:名称],如果此值不为空,他将从服务器获得响应。注销后,我清除此值。 我的代码:Ruby和Sinatra会话问题
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未授权得到响应。 这是为什么发生? 以及如何解决它?