Hogyan lehet szűrni a Flask alkalmazás útvonalait URL-minták alapján?

Dec 24, 2025Hagyjon üzenetet

Szia! Filtering Flask beszállítóként sok embert láttam azon küszködni, hogy hogyan szűrje meg a Flask alkalmazás útvonalait URL-minták alapján. Lehet, hogy kissé technikásnak hangzik, de ne aggódj, azért vagyok itt, hogy lebontsam neked egy egyszerű, könnyed módon.

Először is értsük meg, miért szeretnénk szűrni a Flask alkalmazási útvonalait. Egy valós Flask alkalmazásban egy csomó útvonalat használhat. Némelyikük nyilvános hozzáférést biztosít, néhány belső használatra szolgál, és lehet, hogy bizonyos felhasználói szerepkörökhöz. Az útvonalak URL-minták alapján történő szűrése segít a hozzáférés kezelésében, a biztonság javításában és az alkalmazás szervezettebbé tételében.

Kezdjük a Lombik útvonalak alapjaival. Egy egyszerű Flask alkalmazásban az útvonalakat a@app.routelakberendező. Például:

from lombik import Flask app = Lombik(__name__) @app.route('/') def index(): return 'Ez a kezdőlap' @app.route('/about') def about(): return 'Ez a tájékoztató oldal'

Ebben az egyszerű alkalmazásban két útvonalunk van: a gyökérút (/) és az útvonalat (/körülbelül). De mi van akkor, ha valamilyen szűrőt akarunk alkalmazni, mondjuk, hogy csak bizonyos URL-mintákhoz férhessen hozzá?

Ennek egyik módja a Flask's használatakérés előttlakberendező. Ez a dekorátor lehetővé teszi egy funkció futtatását az egyes kérések feldolgozása előtt. Segítségével ellenőrizhetjük a kért URL-t egy sor minta alapján.

lombikból import Lombik, kérés, megszakítás app = Lombik(__name__) ALLOWED_PATTERNS = [ '/', '/about' ] @app.before_request def restrikt_access(): ha a request.path nincs az ALLOWED_PATTERNS-ben: abort(403) @app.route('/): return a kezdőlap.' def @app.route('/about') def about(): return 'Ez a névjegyoldal'

Ebben a kódban akorlátozza a hozzáféréstfüggvény minden kérés előtt lefut. Ellenőrzi, hogy a kért URL elérési út aALLOWED_PATTERNSlista. Ha nem, akkor 403-as tiltott hibát ad vissza. Ez a pontos URL-egyezéseken alapuló szűrés nagyon egyszerű formája.

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

De mi van akkor, ha rugalmasabb mintákat, például reguláris kifejezéseket akarunk használni? Nos, a Flaskban nincs beépített - regex alapú - útvonalszűrés támogatása, de mi magunk is megvalósíthatjuk.

Íme egy példa arra, hogyan lehet reguláris kifejezéseket használni az útvonalak szűrésére:

import re from lombik import Lombik, kérés, megszakítás app = Lombik(__name__) ALLOWED_REGEX = [ re.compile(r'^/$'), re.compile(r'^/about$') ] @app.before_request def regex_restrict_access(): minta esetén ALLOWED_REGEX:re:stque pattern. abort(403) @app.route('/') def index(): return 'Ez a kezdőlap' @app.route('/about') def about(): return 'Ez a névjegyoldal'

Ebben a kódban definiáltuk a lefordított reguláris kifejezések listáját. Aregex_restrict_accessfüggvény végigfut ezeken a mintákon, és ellenőrzi, hogy valamelyik megfelel-e a kért URL-útvonalnak. Ha talál egyezést, a kérés engedélyezett; ellenkező esetben 403-as hibával blokkolja.

Most beszéljünk egy kicsit az útvonalszűrés gyakorlati alkalmazásairól. Például egy e-kereskedelmi alkalmazásban korlátozhatja a hozzáférést az adminisztratív útvonalakhoz. Meghatározhat egy mintát az összes rendszergazdával kapcsolatos URL-hez, pl/admin/*és csak hitelesített adminisztrátor felhasználók számára engedélyezi az útvonalak elérését.

Egy másik használati eset lehet API-ban. Előfordulhat, hogy korlátozni szeretné a hozzáférést bizonyos API-végpontokhoz az ügyfél jogosultsági szintje alapján. Az útvonalak URL-minták alapján történő szűrésével könnyedén megvalósíthatja ezt a fajta hozzáférés-szabályozást.

Szűrőlombik beszállítóként szeretném megemlíteni termékeinket is. Kiváló minőségű szűrőlombik széles választékát kínáljuk, amelyek tökéletesek laboratóriumi használatra. Nézze meg a miLaboratóriumi átlátszó üveg szűrőlombikok felső csővelésLaboratóriumi üveg kúpos alakú Erlenmeyer szűrőlombikok felső csővel. Ezek a lombikok csúcsminőségű üveganyagokból készülnek, és hatékony és megbízható szűrési műveletekre tervezték.

Menjünk egy kicsit mélyebben a fejlettebb útvonalszűrési forgatókönyvekbe. Például előfordulhat, hogy több bérlős alkalmazással rendelkezik, ahol minden bérlőnek saját engedélyezett útvonala van. Ennek kezelésére tárolhatja az engedélyezett mintákat egy adatbázisban, és lekérdezheti a kérésben szereplő bérlői információk alapján.

from flask import Lombik, kérés, megszakítás import sqlite3 app = Lombik(__name__) def get_allowed_patterns(tenant_id): conn = sqlite3.connect('tenants.db') cursor = conn.cursor() cursor.execute("SELECT minták FROM bérlőktől WHERE result_id =,)fetchone =.sor. conn.close() if result: return result[0].split(',') return [] @app.before_request def tenant_restrict_access(): tenant_id = request.headers.get('X - Bérlő - ID') if tenant_id: enabled_patterns = get_allowed_patterns: engedélyezve van_ kérés0 @app.route('/') def index(): return 'Ez a kezdőlap' @app.route('/about') def about(): return 'Ez a névjegyoldal'

Ebben a példában egy SQLite-adatbázist kérdezünk le, hogy megkapjuk az adott bérlő számára engedélyezett mintákat. A bérlői azonosító a kérés fejlécéből származik. Ha a kért URL nem szerepel az adott bérlő számára engedélyezett minták listájában, a hozzáférés megtagadva.

A biztonság és a hozzáférés-szabályozás mellett az útvonalszűrés is használható a teljesítmény optimalizálására. Például átirányíthatja a bizonyos mintáknak megfelelő kéréseket egy másik szerverre, vagy gyorsítótárba helyezheti az adott URL-minták válaszait.

Nos, ez egy összefoglaló a Flask alkalmazás útvonalainak URL-minták alapján történő szűrésére. Remélem, ez a blogbejegyzés jó megértést adott a témáról. Ha érdeklik szűrőpalackjaink, vagy bármilyen kérdése van a Flaskban található útvonalszűréssel kapcsolatban, ne habozzon kapcsolatba lépni egy beszerzési megbeszéléssel. Azért vagyunk itt, hogy segítsünk minden igényében!

Referenciák:

  • Lombik dokumentációja
  • Python reguláris kifejezések dokumentációja
  • SQLite dokumentáció