Я работаю над большим приложением Django, для доступа к подавляющему большинству из которого требуется вход в систему. Это означает, что по всему нашему приложению мы разбросали:
Это нормально, и это прекрасно работает, если мы не забываем добавлять его везде! К сожалению, иногда мы забываем, и неудача часто не столь очевидна. Если единственная ссылка на представление находится на странице @login_required, вы вряд ли заметите, что действительно можете получить доступ к этому представлению без входа в систему. Но злоумышленники могут это заметить, и это проблема.
Моей идеей было перевернуть систему. Вместо того, чтобы везде вводить @login_required, я бы написал что-то вроде:
Только для публики. Я пытался реализовать это с помощью некоторого промежуточного программного обеспечения, но, похоже, мне не удалось заставить его работать. Я думаю, что все, что я пробовал, плохо взаимодействовало с другим промежуточным программным обеспечением, которое мы используем. Затем я попытался написать что-нибудь для обхода шаблонов URL-адресов и проверки того, что все, что не @public, отмечено @login_required — по крайней мере, тогда мы получим быструю ошибку, если что-то забудем. Но тогда я не мог понять, как определить, был ли @login_required применен к представлению...
Итак, как правильно это сделать? Спасибо за помощь!
Подробнее здесь:
https://stackoverflow.com/questions/216 ... he-default