我有一个(非常)基本的Sinatra程序可以做到这一点:
get '/loginbasic' do
erb :login_basic
end #get /loginbasic
post '/generatetoken' do
@@username = params[:username]
@@password = params[:password]
@@token = function(@@username, @@password)
end #post /generatetoken
get '/token' do
erb :token, :locals => {'username' => @@username, 'serviceroot' => @@serviceroot, 'token' => @@token}
end #/token
非常直截了当。
我要求输入用户名和密码(/ loginbasic) loginbasic发布到/ generatetoken然后生成一个令牌(带有函数) 然后,用户可以指向/ token来读取其令牌。
工作正常。
问题在于它是单个会话,从某种意义上说,如果我从另一台笔记本电脑指向/ token,它会显示输入id / password并生成令牌的用户令牌。
似乎Sinatra支持多会话(http://www.sinatrarb.com/faq.html#sessions),但我不确定如何从代码角度实现这一点。我想要做的是,如果用户连接到/ token并且他/她没有生成令牌,他/她会得到一个错误(或者更好,但它被重定向到/ loginbasic)。
我怎样才能提升我的代码来实现这一目标?
谢谢!
答案 0 :(得分:0)
我能够以这种方式调整代码,它似乎正在起作用:
get '/loginbasic' do
erb :login_basic
end #get /loginbasic
post '/generatetoken' do
session[:@@username] = params[:username]
session[:@@password] = params[:password]
session[:@@token] = function(session[:@@username], session[:@@password])
end #post /generatetoken
get '/token' do
erb :token, :locals => {'username' => session[:@@username], 'serviceroot' => @@serviceroot, 'token' => session[:@@token]}
end #/token