• 0

كيف أستعمل استيثاق HTTP على تطبيق Sinatra؟

أريد أن أحميّ تطبيقي المبني ب Sinatra عن طريق استيثاق HTTP فكيف يُمكن القيّام بذلك؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يُمكنك أن تطبّق الاستيثاق البسيط بالـ HTTP بطريقتين:

الأولى، فقط بإضافة وسيطة Rack::Auth::Basic في سلسلة معالجة الطّلبات مع تعليمة use :

require 'sinatra'

use Rack::Auth::Basic, "Restricted Area" do |username, password|
  username == 'admin' and password == 'admin'
end

get '/' do
  "You're welcome"
end

get '/foo' do
  "You're also welcome"
end

المثال أعلاه يقوم بحجب جميع العروض والمسارات إلّا عند إدخال اسم المُستخدم "admin" و كلمة المرور "admin".

الطّريقة الثّانيّة، تصلح إذا كنت ترغب بحماية عناوين URL معيّنة فقط في التّطبيق، أو إذا كنت ترغب بجعل الاستيثاق أكثر تعقيدا، والطّريقة تكون باستعمال شيفرة كالتّالي:

require 'sinatra'

helpers do
  def protected!
    return if authorized?
    headers['WWW-Authenticate'] = 'Basic realm="Restricted Area"'
    halt 401, "Not authorized\n"
  end

  def authorized?
    @auth ||=  Rack::Auth::Basic::Request.new(request.env)
    @auth.provided? and @auth.basic? and @auth.credentials and @auth.credentials == ['admin', 'admin']
  end
end

get '/' do

  "يُمكن للجميع أن يرى هذه الصّفحة"
end

get '/protected' do
  protected!
  "مرحبا بك، لقد قمت بالاستيثاق بنجاح"
end
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن