在 Rails 中進行 Http 基本身份驗證

Home 程式開發 在 Rails 中進行 Http 基本身份驗證
在 Rails 中進行 Http 基本身份驗證
Ruby on Rails

最近的 rails 專案裡需要 HTTP basic authentication,實作起來很容易,底下讓我們看範例:

接收端

在你想要進行身分驗證的 controller 端利用 http_basic_authenticate_with,底下實現在 ApplicationController 裡的話會是全站套用

class ApplicationController < ActionController::Base
  http_basic_authenticate_with :name => "user", :password => "password" 
end

倘若只是想在某個 controller 裡實現,比如 ProductsController

class ProductsController < ApplicationController
  http_basic_authenticate_with name: "admin", password: "hunter2"
end

發送端

我們可以使用基本的 Net::HTTP::Post 完成發送的任務,詳見底下的示範。

您可以在 request.basic_auth 裡添加身分驗證時所需要的使用者名稱與密碼,利用 content_type 指定傳送的資料格式,比如 json,然後於 body 裡添加傳輸的資料,為了資料安全性走 https 通道,最後以 Net::HTTP.start 建立連線並且執行發送。

uri = URI.parse("https://somewebsite.com/api/subscribers")
  request = Net::HTTP::Post.new(uri)
  request.basic_auth("someuser", "1stAKPe0lWxAdKn")
  request.content_type = "application/json"
  request.body = JSON.dump({
    "email" => params[:email],
    "name" => params[:name],
    "status" => "enabled",
})

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

相關文章