چگونه مسیرهای برنامه Flask را بر اساس الگوهای URL فیلتر کنیم؟

Dec 24, 2025پیام بگذارید

سلام! به عنوان یک تامین کننده Filtering Flask، من افراد زیادی را دیده ام که با نحوه فیلتر کردن مسیرهای برنامه Flask بر اساس الگوهای URL مشکل دارند. ممکن است کمی فنی به نظر برسد، اما نگران نباشید، من اینجا هستم تا آن را برای شما به روشی ساده و آسان تجزیه کنم.

ابتدا، بیایید بفهمیم که چرا می‌خواهیم مسیرهای برنامه Flask را فیلتر کنیم. در یک برنامه Flask دنیای واقعی، ممکن است مسیرهای زیادی داشته باشید. برخی برای دسترسی عمومی، برخی برای استفاده داخلی، و برخی ممکن است برای نقش های کاربری خاص باشند. فیلتر کردن مسیرها بر اساس الگوهای URL به مدیریت دسترسی، بهبود امنیت و سازماندهی بیشتر برنامه کمک می کند.

بیایید با اصول مسیرهای Flask شروع کنیم. در یک برنامه ساده Flask، شما مسیرها را با استفاده از@app.routeدکوراتور به عنوان مثال:

from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'This is the home page' @app.route('/about') def about(): return 'This is the about'

در این برنامه ساده، ما دو مسیر داریم: مسیر ریشه (/) و مسیر مربوط به (/درباره). اما اگر بخواهیم فیلتری را اعمال کنیم، مثلاً، فقط به الگوهای URL خاصی اجازه دسترسی داشته باشیم؟

یکی از راه های انجام این کار استفاده از Flask's استbefore_requestدکوراتور این دکوراتور به شما امکان می دهد قبل از پردازش هر درخواست، یک عملکرد را اجرا کنید. ما می توانیم از آن برای بررسی URL درخواستی در برابر مجموعه ای از الگوها استفاده کنیم.

from flask import Flask, request, abort app = Flask(__name__) ALLOWED_PATTERNS = [ '/', '/about' ] @app.before_request def limited_access(): if request.path در ALLOWED_PATTERNS نیست: abort(403) @app.route('/'): بازگشت این صفحه اصلی است @app.route('/about') def about(): return 'این صفحه درباره است'

در این کد،محدودیت_دسترسیتابع قبل از هر درخواست اجرا می شود. بررسی می‌کند که آیا مسیر URL درخواستی در مسیر استALLOWED_PATTERNSفهرست اگر اینطور نباشد، خطای 403 Forbidden را برمی‌گرداند. این یک شکل بسیار اساسی از فیلتر کردن بر اساس مطابقت دقیق URL است.

Laboratory Clear Glass Filtering Flasks With Upper TubulatureLaboratory Glass Conical Shape Erlenmeyer Filtering Flasks With Upper Tubulation

اما اگر بخواهیم از الگوهای انعطاف پذیرتری مانند عبارات منظم استفاده کنیم، چه؟ خوب، Flask دارای فیلترینگ مسیر مبتنی بر regex نیست، اما ما خودمان می توانیم آن را پیاده سازی کنیم.

در اینجا مثالی از نحوه استفاده از عبارات منظم برای فیلتر کردن مسیرها آورده شده است:

Import re from flask import Flask, request, abort app = Flask(__name__) ALLOWED_REGEX = [ re.compile(r'^/$'), re.compile(r'^/about$') ] @app.before_request def regex_restrict_access(): برای الگوی ALLOWED_restrict_REGEX abort(403) @app.route('/') def index(): return 'این صفحه اصلی است' @app.route('/about') def about(): return 'این صفحه درباره است'

در این کد، لیستی از عبارات منظم کامپایل شده را تعریف کرده ایم. اینregex_restrict_accessتابع از طریق این الگوها حلقه می زند و بررسی می کند که آیا هر یک از آنها با مسیر URL درخواستی مطابقت دارد یا خیر. اگر مطابقت یافت شود، درخواست مجاز است. در غیر این صورت با خطای 403 مسدود شده است.

حالا بیایید کمی در مورد کاربردهای عملی فیلترینگ مسیر صحبت کنیم. به عنوان مثال، در یک برنامه تجارت الکترونیک، ممکن است بخواهید دسترسی به مسیرهای اداری را محدود کنید. شما می توانید یک الگو برای همه URL های مرتبط با مدیر، مانند/admin/*و فقط به کاربران ادمین تایید شده اجازه دسترسی به این مسیرها را می دهد.

مورد استفاده دیگر می تواند در یک API باشد. ممکن است بخواهید دسترسی به نقاط پایانی API خاصی را بر اساس سطح مجوز مشتری محدود کنید. با فیلتر کردن مسیرها بر اساس الگوهای URL، می توانید به راحتی این نوع کنترل دسترسی را پیاده سازی کنید.

به عنوان یک تامین کننده فلاسک فیلتر، من همچنین می خواهم به محصولات خود اشاره کنم. ما طیف گسترده ای از فلاسک های فیلتر با کیفیت بالا را ارائه می دهیم که برای استفاده آزمایشگاهی عالی هستند. ما را بررسی کنیدفلاسک های فیلتر شیشه شفاف آزمایشگاهی با لوله بالاییوفلاسک های فیلترینگ ارلنمایر مخروطی شیشه ای آزمایشگاهی با لوله بالایی. این فلاسک ها از مواد شیشه ای درجه یک ساخته شده اند و برای عملیات فیلترینگ کارآمد و قابل اعتماد طراحی شده اند.

بیایید کمی عمیق تر به سناریوهای فیلترینگ مسیر پیشرفته تر برویم. به عنوان مثال، ممکن است یک برنامه کاربردی چند مستاجر داشته باشید که در آن هر مستاجر مجموعه ای از مسیرهای مجاز خود را دارد. برای انجام این کار، می توانید الگوهای مجاز را در یک پایگاه داده ذخیره کنید و بر اساس اطلاعات مستاجر در درخواست، آن را پرس و جو کنید.

از وارد کردن فلاسک فلاسک، درخواست، لغو واردات برنامه sqlite3 = Flask(__name__) def get_allowed_patterns(tenant_id): conn = sqlite3.connect('tenants.db') مکان نما = conn.cursor() cursor.execute("SELECT patterns FROM tenants,)(یک cursorid=WHERE). conn.close() if result: return result[0].split(',') return [] @app.before_request def tenant_restrict_access(): tenant_id = request.headers.get('X - Tenant - ID') if tenant_id: allow_patterns = get_allowed_patterns.request. @app.route('/') def index(): return 'این صفحه اصلی است' @app.route('/about') def about(): return 'این صفحه درباره است'

در این مثال، ما از پایگاه داده SQLite پرس و جو می کنیم تا الگوهای مجاز برای یک مستاجر خاص را بدست آوریم. شناسه مستاجر از سرصفحه های درخواست بازیابی می شود. اگر URL درخواستی در لیست الگوهای مجاز برای آن مستاجر نباشد، دسترسی ممنوع است.

علاوه بر امنیت و کنترل دسترسی، از فیلتر مسیر می توان برای بهینه سازی عملکرد نیز استفاده کرد. به عنوان مثال، می‌توانید درخواست‌هایی را که با الگوهای خاصی مطابقت دارند به سرور دیگری هدایت کنید یا پاسخ‌ها را برای الگوهای URL خاص ذخیره کنید.

خوب، این خلاصه ای از نحوه فیلتر کردن مسیرهای برنامه Flask بر اساس الگوهای URL است. امیدوارم این پست وبلاگ به شما درک خوبی از موضوع داده باشد. اگر به فلاسک های فیلترینگ ما علاقه مند هستید یا در مورد فیلترینگ مسیر در فلاسک سؤالی دارید، دریغ نکنید که برای بحث خرید تماس بگیرید. ما اینجا هستیم تا با تمام نیازهایتان به شما کمک کنیم!

مراجع:

  • مستندات فلاسک
  • مستندات عبارات منظم پایتون
  • اسناد SQLite