这样做的背景是,我想限制用户管理,而不让前端应用程序拥有对数据库的完全访问权限(用户表的创建由后端进程完成)。前端应该 - 只 - 被允许访问当前登录用户有权读取的表。这样做的原因是,前端的安全问题不应该暴露对整个数据库的访问权限,但在最坏的情况下只能暴露当前用户的内容,而我可以随机读取数据库而不会打扰后端进程。
因此,我希望 Django 模型与给定用户连接,而不是 settings.py 中具有对 Django 数据库的全局访问权限的用户。
这是否可以在不覆盖核心数据库连接的情况下以某种方式实现?
最佳答案
从 Django 1.2 或更高版本开始,您可以在 settings.py 中定义多个数据库。虽然我从来没有用它来指向同一个数据库,但我看不出有什么理由不能定义到同一个数据库但具有不同用户凭据的多个连接。
然后您可以根据数据库路由器中的登录用户(或未登录用户,视情况而定)决定使用哪个连接
这方面的文档是 here .
我发现他们选择使用一个名为“auth”的应用程序作为示例令人困惑,但它只是一个与其他任何应用程序一样的应用程序,所以不要混淆认为它与 auth 有任何关系,即使在你的情况有点像。
关于django 数据库重新连接不同的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006603/