【问题标题】:Accessing rack route in config.ru在 config.ru 中访问机架路由
【发布时间】:2012-03-01 02:20:16
【问题描述】:

我在 config.ru 中使用 Basic Auth 进行身份验证。在 Auth Basic 块中,我想从路径中获取 ID 并检查用户是否有权查看路径。但是,我不知道如何访问该路径。

use Rack::Auth::Basic do |username, password|
  # access path here
end

有什么想法吗?

【问题讨论】:

    标签: ruby rack


    【解决方案1】:

    当您使用 put Rack::Auth::Basic via use 时,您实际上是将其插入到请求处理链中。这将尝试验证所有请求。要选择性地使用它,仅在某些路径上,您需要仅在相应的请求端点(操作)上执行身份验证。有点像 -

    # helpers in ApplicationController
    def authorized?
      @auth =  Rack::Auth::Basic::Request.new(request.env)
      @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['username', 'password']
    end
    
    def username(username)
      @auth.credentials[0]
    end
    
    # action in PostsController
    def index
     if authorized?(params[:id]) && username == "admin"
       # protected stuff
     else
       render :text => "unauthorized" 
     end
    end 
    

    参考:Sinatra doc

    虽然通过使用完整的用户帐户和基于会话的方法可以更好地处理这种身份验证。在 rails 3.1 或 devise 中签出 has_secure_password

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 2011-07-03
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2012-04-30
      • 2011-03-16
      相关资源
      最近更新 更多