Маршрут с питоном Сокол

Я новичок в Falcon Framework Python. У меня есть вопрос относительно использования промежуточного класса Falcon. Разумно ли использовать пользовательские маршрутизаторы и аутентификацию запросов в промежуточном программном обеспечении или это следует обрабатывать только на маршрутизации

**main.py**

import falcon
import falcon_jsonify
import root
from waitress import serve

if __name__ == "__main__":
    app = falcon.API(
        middleware=[falcon_jsonify.Middleware(help_messages=True),
        root.customRequestParser()]
    )
    serve(app, host="0.0.0.0", port=5555)

root.py где я планирую написать собственные маршруты

import json
import falcon

class Home(object):
    @classmethod
    def getResponse(self):
        return {"someValue": "someOtherValue"}

def process_request_path(path):
    path = path.lstrip("/").split("/")
    return path

class customRequestParser(object):
    def process_request(self, req, resp):
        print process_request_path(req.path)

Я также видел примеры использования app = falcon.API(router=CustomRouter()), Я увидел документацию на официальной странице документации сокола - http://falcon.readthedocs.io/en/stable/api/routing.html

Пожалуйста, дайте мне знать, если есть какие-либо ссылки, которые я могу просмотреть.

1 ответ

Цитировать FAQ сообщества Falcon

Как я могу аутентифицировать запросы?

Хуки и компоненты промежуточного программного обеспечения могут использоваться вместе для аутентификации и авторизации запросов. Например, компонент промежуточного программного обеспечения может использоваться для анализа входящих учетных данных и размещения результатов в req.context, Затем нижестоящие компоненты или хуки могут использовать эту информацию для авторизации запроса с учетом роли пользователя и запрошенного ресурса.

Крюки Falcon - это декораторы, используемые в каждой конкретной функции запроса (т.е. on_get) или на весь класс. Они отлично подходят для проверки входящих запросов, поэтому, как сказано в FAQ, аутентификация может быть выполнена на этом этапе.

Вот (непроверенный) пример, который я подбил:

def AuthParsingMiddleware(object):
    def process_request(self, req, resp):
        req.context['GodMode'] = req.headers.get('Auth-Token') == 'GodToken':
    # Might need process_resource & process_response     

def validate_god_mode(req, resp, resource, params):
    if not req.context['GodMode']:
        raise falcon.HTTPBadRequest('Not authorized', 'You are not god')


def GodLikeResource(object):
    @falcon.before(validate_god_mode):
    def on_get(self, req, resp):
        resp.body = 'You have god mode; I prostrate myself'


app = falcon.API(
    middleware=[falcon_jsonify.Middleware(help_messages=True),
                AuthParsingMiddleware()]
)
app.add_route('/godlikeresource', GodLikeResource())

Или лучше...

Есть пакет сокола-auth.

Другие вопросы по тегам