SORU
13 AĞUSTOS 2010, Cuma


Sinatra - API - kimlik Doğrulama

Sinatra küçük API bir uygulama geliştirmek için gidiyoruz. Kimlik doğrulama seçenekleri API çağrıları güvenli?

CEVAP
14 AĞUSTOS 2010, CUMARTESİ


Sinatra yerleşik kimlik doğrulama desteği yoktur. Bazı taşlar vardır, ama çoğu kullanıcı kimlik doğrulaması (örneğin bir web sitesi için) için tasarlanmıştır. Bir API için overkill gibi görünüyor. Yeterince kolay kendi yapmak. Talebinizi kontrol edin yollar, her yer geçerli API anahtarı içeren, ve değilse, 401 hatası döndürmek için parametreler.

helpers do
  def valid_key? (key)
    false
  end
end

get "/" do
  error 401 unless valid_key?(params[:key])

  "Hello, world."
end

#  $ irb -r open-uri
#  >> open("http://yourapp.com/api/?key=123")
#  OpenURI::HTTPError: 401 Unauthorized

error çağrısının bir şey olursa valid_key? yöntem devam etmesini talep durur — error aramalar halt dahili false döndürürse, olacak.

Tabii ki, ideal her yol başında kontrol tekrarlamak için değil. Bunun yerine, yollarına koşulları ekleyen küçük bir uzantısı oluşturabilirsiniz:

class App < Sinatra::Base
  register do
    def check (name)
      condition do
        error 401 unless send(name) == true
      end
    end
  end

  helpers do
    def valid_key?
      params[:key].to_i % 2 > 0
    end
  end

  get "/", :check => :valid_key? do
    [1, 2, 3].to_json
  end
end

Eğer sadece tüm yolları üzerinde kimlik doğrulaması istiyorsanız, before işleyicisi kullanın:

before do
  error 401 unless params[:key] =~ /^xyz/
end

get "/" do
  {"e" => mc**2}.to_json
end

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006