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