Лучший способ сделать логин_требуемый Django значением по умолчанию ⇐ Python

Программы на Python
Anonymous
Лучший способ сделать логин_требуемый Django значением по умолчанию

Сообщение Anonymous »

Я работаю над большим приложением Django, для доступа к подавляющему большинству из которого требуется вход в систему. Это означает, что по всему нашему приложению мы разбросали:

Код: Выделить всё

@login_required
def view(...):
Это нормально, и это прекрасно работает, если мы не забываем добавлять его везде! К сожалению, иногда мы забываем, и неудача часто не столь очевидна. Если единственная ссылка на представление находится на странице @login_required, вы вряд ли заметите, что действительно можете получить доступ к этому представлению без входа в систему. Но злоумышленники могут это заметить, и это проблема.

Моей идеей было перевернуть систему. Вместо того, чтобы везде вводить @login_required, я бы написал что-то вроде:

Код: Выделить всё

@public
def public_view(...):
Только для публики. Я пытался реализовать это с помощью некоторого промежуточного программного обеспечения, но, похоже, мне не удалось заставить его работать. Я думаю, что все, что я пробовал, плохо взаимодействовало с другим промежуточным программным обеспечением, которое мы используем. Затем я попытался написать что-нибудь для обхода шаблонов URL-адресов и проверки того, что все, что не @public, отмечено @login_required — по крайней мере, тогда мы получим быструю ошибку, если что-то забудем. Но тогда я не мог понять, как определить, был ли @login_required применен к представлению...

Итак, как правильно это сделать? Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/216 ... he-default

Вернуться в «Python»