اذهب إلى المحتوى

السؤال

Recommended Posts

  • 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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...