📜  Ruby on Rails 2.1-HTTP基本身份验证(1)

📅  最后修改于: 2023-12-03 15:19:51.900000             🧑  作者: Mango

Ruby on Rails 2.1-HTTP基本身份验证

简介

HTTP基本身份验证是一种经典的用户验证方式,可用于控制Web应用程序的访问权限。在Ruby on Rails 2.1中,它非常容易集成到您的应用程序中。

如何实现

在Ruby on Rails 2.1中,你可以在controller的action中使用before_filter,把HTTP基本身份验证过滤器设为某一action的前置过滤器。

1. 添加认证过滤器

app/controllers/application_controller.rb 中添加以下方法:

class ApplicationController < ActionController::Base
  before_filter :authenticate

  private
    def authenticate
      authenticate_or_request_with_http_basic do |username, password|
        username == "admin" && password == "secret"
      end
    end
end

该代码将一个身份验证过滤器添加到应用程序的 ApplicationController 类中。这个过滤器要求用户输入用户名和密码,并在输入错误时返回 HTTP 401 Unauthorized。在此示例中,用户名和密码均为 adminsecret,您需要自己更改它们。

2. 指定过滤器应用的action

现在,您需要在controller中为indexshow action指定应用该过滤器:

class ProductsController < ApplicationController
  before_filter :authenticate, :only => [:index, :show]
  
  def index
    # Code for index action
  end

  def show
    # Code for show action
  end
end

在这个例子中,身份验证将仅应用于index和showaction,而其他action将不会有这种限制。

3.重启服务器

为更改生效,您需要重启Web服务器(例如,Webrick或Mongrel):

$ rails server
4.测试

现在,你可以在你的浏览器中访问指向indexshow action的URL。当尝试访问这些URL时,您将被要求输入您在之前代码中设置的的用户名和密码。

结论

Ruby on Rails 2.1内置的HTTP基本身份验证是保护您的Web应用程序简单方法。通过在应用程序控制器中添加简单的before_filter,即可实现HTTP基本身份验证。

以上为我的介绍,如有疏漏或错误,请指正。