Warden vs Rack :: Auth :: Basic。在Ruby-Framework中进行HTTP-Basic-Auth

时间:2010-08-28 00:38:27

标签: ruby-on-rails authentication rest

我想用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示例吗?或者向我解释使用监狱长的更多好处?

提前致谢!!! :)

1 个答案:

答案 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身份验证规则并行工作。