News Grower

Независимое покрытие AI, стартапов и технологий.

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 минут

Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут

Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...

CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)

CLI через Segger J-Link RTT на ARM Cortex-M (или однопортовая лапароскопия)

В этом тексте я написал про то как наладить интерфейс командной строки (CLI) по двухпроводному синхронному отладочному интерфейсу SWD. Посылать в прошивку команды и получать отв...

Практический расчет и изготовление преобразователя типа Joule Thief

Практический расчет и изготовление преобразователя типа Joule Thief

Практический расчет и изготовление повышающего преобразователя Joule Thief для питания светодиода от разряженной батарейкиВ данной статье показано, как самостоятельно рассчитать...

Рекламный слот

Встроенный блок в статье

Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.

Партнерский слот

Похожие статьи

Еще материалы, которые пересекаются по тегам, источнику или категории.

Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут

Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут

Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...

Еще материалы от Habr

Свежие публикации и продолжение темы от той же редакции.

Открыть страницу источника
Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут

Как я научил ИИ читать советские ГОСТы и сократил подготовку карт контроля с 2 часов до 5 минут

Реальный кейс: как LLM заменяет трех технологов на металлургическом заводе - и почему универсальный подход не сработал.Как я научил ИИ читать советские ГОСТы и сократил подготов...

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части...

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Как тимлиду давать обратную связь: 4 фреймворка, которые работают

Даже опытные руководители пасуют перед сложными разговорами. Мы молчим, когда сотрудник делает что-то не так. Терпим, надеемся, что «само рассосётся». А потом удивляемся, почему...

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я сделал скоростной аналог скретча(12289+ скриптов)! История разработки новичка

Я только начинаю писать код, он у меня не аккуратный и странный, я его нигде не публиковал никогда, проект писать на luaJIT love 2d, а заголовок правдивый, оно смогло запустить ...