35

こんにちは、私は Grails 出身で、Rails は初めてです。Railsでhttp基本認証を行いたいです。

次のような基本認証を行うgrailsのコードがあります。

def authString = "${key}:".getBytes().encodeBase64().toString()
def conn = "http://something.net".toURL().openConnection()
conn.setRequestProperty("Authorization", "Basic ${authString}")

レールでも同じことができますか?

4

8 に答える 8

92

http基本認証を使用して制限するコントローラーに以下のコードを記述します

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

open-uriを使用してリクエストを行うと、次のようになります。

require 'open-uri'

open("http://www.your-website.net/", 
  http_basic_authentication: ["user", "password"])
于 2013-01-17T08:42:35.317 に答える
22

Ruby on Rails 4 では、コンテキストに応じて、基本的な HTTP 認証をサイト全体またはコントローラーごとに簡単に適用できます。

たとえば、サイト全体の認証が必要な場合:

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

または、コントローラーごとに:

class CarsController < ApplicationController
  http_basic_authenticate_with name: "admin", password: "hunter2"
end
于 2013-12-27T04:25:59.557 に答える
12

私は@Nishantの答えに賛成しましたが、別の情報を追加したかったのです。only渡すなどして、特定のコントローラーアクションにのみ適用されるように、いつでもフィルターを設定できますexcept

http_basic_authenticate_with name: "admin", password: "strongpasswordhere", only: [:admin, :new, :edit, :destroy]

また

http_basic_authenticate_with name: "admin", password: "strongpasswordhere", except: [:show]

多くの場合に非常に役立ちます。

于 2014-09-24T14:58:16.517 に答える
2

このトピックには素晴らしいRailsキャストがあります

http://railscasts.com/episodes/82-http-basic-authentication

于 2013-01-17T08:09:19.080 に答える
2

基本的な HTTP 認証で保護された HTTP エンドポイントに接続する場合、通常はHTTPartyを使用します。HTTPartyは、 net/httpなどの下位の Ruby STD クラスのシンプルなラッパーです。

基本認証を使用したHTTPartyの使用例。

class Delicious
  include HTTParty
  base_uri 'https://api.del.icio.us/v1'

  def initialize(u, p)
    @auth = {username: u, password: p}
  end

  def recent options={}
    options.merge!({basic_auth: @auth})
    self.class.get('/posts/recent', options)
  end
end

delicious = Delicious.new("<username>", "<password>")

pp delicious.recent #=> list of recent elements

GitHub でその他の例を確認してください。

于 2013-01-17T08:15:28.640 に答える
1

最新のRailsバージョンには、 HTTP基本認証ASCIIcastの手順を説明するがあります。

リンクはここにあります。

補足: HTTP基本認証はユーザー名とパスワードをクリアテキストで送信するため、より高いレベルのセキュリティが必要なアプリケーションにはこの方法を使用しないでください。

于 2013-01-17T08:18:02.433 に答える