Authorization без middleware: как я завернул Casbin в декораторы для FastAPI
Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(get_enforcer), одна ручная проверка. Потом роутов становится больше, правил доступа становится больше, и внезапно половина endpoint’ов начин...
Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(get_enforcer), одна ручная проверка. Потом роутов становится больше, правил доступа становится больше, и внезапно половина endpoint’ов начинает содержать не бизнес-логику, а обвязку вокруг нее.В какой-то момент меня перестал устраивать и классический подход через dependency injection в каждом роуте, и вариант с middleware. Хотелось, чтобы правило доступа было видно прямо рядом с маршрутом, но при этом не приходилось таскать авторизацию в сигнатуры всех функций.В итоге я собрал casbin-fastapi-decorator — тонкий слой над Casbin для FastAPI, который позволяет описывать authorization через декораторы.Идея простая:
Связанные теги
Компании и люди
Линия сюжета
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут
Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...
Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст
Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...
Как тимлиду давать обратную связь: 4 фреймворка, которые работают
Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...
Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка
Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...
CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)
В этом тексте я написал про то как наладить интерфейс командной строки (CLI) по двухпроводному синхронному отладочному интерфейсу SWD. Посылать в прошивку команды и получать отв...
Практический расчет и изготовление преобразователя типа Joule Thief
Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейкиВ данной статье показано, как самостоятельно рассчитать...
Рекламный слот
Встроенный блок в статье
Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут
Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...
Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст
Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...
Как тимлиду давать обратную связь: 4 фреймворка, которые работают
Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...
Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка
Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут
Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...
Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст
Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...
Как тимлиду давать обратную связь: 4 фреймворка, которые работают
Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...
Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка
Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...