Я працюю над великим додатком Django, переважна більшість з яких потребує входу для доступу. Це означає, що ми впродовж усієї програми додали:
@login_required
def view(...):
Це добре, і це чудово працює , поки ми пам'ятаємо його додавати скрізь ! На жаль, ми іноді забуваємо, і невдача часто не є надзвичайно очевидною. Якщо єдине посилання на представлення даних перебуває на сторінці @login_required, ви, швидше за все, не помітите, що ви можете дійсно дійти до цього виду, не входячи в систему. Але погані хлопці можуть помітити, що є проблемою.
Моя ідея полягала в тому, щоб змінити систему. Замість того, щоб вводити @login_required всюди, натомість я маю щось подібне:
@public
def public_view(...):
Просто для публічних речей. Я спробував реалізувати це за допомогою деякого проміжного програмного забезпечення, і я не міг здатися, що це працює. Я думаю, все, що я намагався, погано взаємоділо з іншими проміжними програмами, які ми використовуємо. Далі я спробував щось написати, щоб відмітити шаблони URL-адрес, щоб перевірити, чи все, що не було @public, було позначено @login_required - принаймні тоді ми отримаємо швидку помилку, якщо щось забули. Але тоді я не зміг зрозуміти, як сказати, чи було застосовано @login_required до подання ...
Отже, який правильний спосіб зробити це? Дякую за допомогу!