【发布时间】:2015-02-07 00:09:15
【问题描述】:
我有一个(非常)基本的 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 / 密码并生成令牌的用户的令牌。
Sinatra 似乎支持多会话 (http://www.sinatrarb.com/faq.html#sessions),但我不确定如何从代码角度实现这一点。我想做的是,如果用户连接到 /token 并且他/她没有生成的令牌,他/她要么收到错误(或者更好的是它被重定向到 /loginbasic)。
我怎样才能提升我的代码来实现这一点?
谢谢!
【问题讨论】:
-
看看 Sinatra 的食谱。那里有一篇关于身份验证的文章:recipes.sinatrarb.com/p/middleware/…
-
谢谢@w0lf。我不确定我是否能够访问该链接。我什至不确定他是否正在尝试做我想做的事情(也许他是)。我的一位同事向我指出了另一篇文章(我在谷歌上搜索失败),其中有足够的内容让我可以按照我需要的方式调整代码:gist.github.com/amscotti/1384524