我想用Ruby创建一个WebService(Sinatra,Padrino,也许是Ramaze ......还不知道......),但我绝对想要保护它......
它将成为Iphone-App的后端,所以我认为SSL-Secured HTTP-Basic-Auth会很好。
我一直在寻找几个身份验证框架并遇到了监狱长... 似乎有很好的记录,设计是建立在它之上......所以不能那么糟糕......
但是......对我而言,似乎有点矫枉过正,因为我需要......
然后我找到了这个Code-Snipplet:
def protected!
unless authorized?
response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
throw(:halt, [401, "Not authorized\n"])
end
end
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'admin']
end
看起来我只是不需要超过那个... 或者你们中的任何人能提供一个很好的Warden + HTTP-Basic Auth示例吗?或者向我解释使用监狱长的更多好处?
提前致谢!!! :)
答案 0 :(得分:5)
不完全确定你想要在这里实现的目标。但是我们有一个Rails应用程序,我们使用Warden(+ devise)结合HTTP-Basic-Auth使用中间件隐藏我们的暂存实例。这是我们在config / environments / staging.rb中添加的内容:
config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Not for public eyes") do |u, p|
u == 'admin' && p == 'secret'
end
这与我们的Warden身份验证规则并行工作。