Saya sedang mengerjakan aplikasi Django yang besar, yang sebagian besar membutuhkan login untuk mengakses. Ini berarti bahwa di seluruh aplikasi kami, kami telah menaburkan:
@login_required
def view(...):
Tidak apa-apa, dan berfungsi dengan baik selama kita ingat untuk menambahkannya di mana-mana ! Sayangnya terkadang kita lupa, dan kegagalan seringkali tidak terlalu terbukti. Jika satu-satunya tautan ke tampilan ada di laman @login_required maka Anda tidak akan menyadari bahwa Anda benar-benar dapat mencapai tampilan itu tanpa masuk. Tetapi orang jahat mungkin memperhatikan, yang merupakan masalah.
Ide saya adalah membalikkan sistem. Alih-alih harus mengetik @login_required di mana-mana, saya malah memiliki sesuatu seperti:
@public
def public_view(...):
Hanya untuk urusan umum. Saya mencoba menerapkan ini dengan beberapa middleware dan saya tidak bisa membuatnya bekerja. Semua yang saya coba berinteraksi buruk dengan middleware lain yang kami gunakan, saya kira. Selanjutnya saya mencoba menulis sesuatu untuk menelusuri pola URL untuk memeriksa bahwa semua yang bukan @public telah ditandai @login_required - setidaknya kita akan mendapatkan kesalahan cepat jika kita lupa sesuatu. Tapi kemudian saya tidak tahu bagaimana cara mengetahui apakah @login_required telah diterapkan ke tampilan ...
Jadi, apa cara yang benar untuk melakukan ini? Terima kasih untuk bantuannya!