我正在开发一个大型的 Django 应用程序,其中绝大多数需要登录才能访问。这意味着在我们的应用程序中,我们已经撒了:
@login_required
def view(...):
这是罚款,它工程伟大的 只要我们记得到处加就行!可悲的是,有时我们会忘记,失败往往并不明显。如果一个视图的唯一链接是在@login _ need 页面上,那么您可能不会注意到,您实际上不需要登录就可以访问该视图。但坏人可能会注意到,这是个问题。
我的想法是颠倒这个系统,而不是在任何地方输入@login _ need,我会输入这样的内容:
@public
def public_view(...):
只是为了公共事务。我试图用一些中间件来实现这个功能,但似乎无法实现。我想,我试过的所有东西都与我们正在使用的其他中间件交互得很差。接下来,我尝试编写一些东西来遍历 URL 模式,以检查所有不是@public 的东西都被标记为@login _ need ——至少这样,如果我们忘记了什么东西,我们会得到一个快速的错误。但是我不知道如何判断@login _ need 是否应用到了一个视图..。
那么,怎么做才是正确的呢? 谢谢你的帮助!