我想在我的模块化Sinatra应用中对特定路由使用HTTP摘要式身份验证。对单个路由使用HTTP摘要式身份验证
sinatra recipes website中列出的示例仅描述如何为整个应用程序启用摘要身份验证。针对特定路线的解决方案是为了创建两个独立的应用程序(一个使用摘要身份验证,另一个不使用),将受保护和未受保护的路线置于各自的应用程序中。
这就需要像下面这样:
require 'sinatra/base'
class Protected < Sinatra::Base
use Rack::Auth::Basic, "Protected Area" do |username, password|
username == 'foo' && password == 'bar'
end
get '/' do
"secret"
end
end
class Public < Sinatra::Base
get '/' do
"public"
end
end
这似乎有点小题大做了我。
有没有办法在模块化的sinatra应用程序中保护单个路线,而无需创建全新的应用程序?
在FAQ中有一个例子,它创建一个Rack :: Auth :: Basic :: Request实例并传入环境中,但是使用digest auth做这样的事情会有很大的不同,并且更多的是手册认证程序。
这里是基本认证例如:
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? &&
@auth.basic? &&
@auth.credentials &&
@auth.credentials == ['admin', 'admin']
end
有没有人对如何可以这样做的想法?
不能用Sinatra应用程序的中间件完成这件事 – Viren
哦拍完小姐完全错过了,你已经在做 – Viren