Python桌面应用程序的数据库权限

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (12)

我最近开始开发一个桌面python应用程序,我想知道更多的专家会如何处理这个问题。

我曾经使用PHP + MySQL开发(大约5 - 10年前)Web应用程序,因为代码/程序位于用户无法访问的服务器上(网页除外),我可以简单地将用户/组权限存储在数据库中的表中,例如users,users_groups,users_permissions等。然后,如果用户有权访问该页面/更新该数据库中的记录,我会检查每个页面加载。

使用桌面应用程序,用户可以访问可执行文件(可以相对容易地反编译为源代码,用Python编写),这种方法可能会有很大不同。

由于MySQL已经分叉到MariaDB并且不再那么积极开发,PostgreSQL看起来很有希望开始。我想在PostgreSQL级别创建不同的用户并让PostgreSQL处理权限(我的应用程序的instad直接处理它们)。

但是,这只允许将权限调整到表级别。将允许用户在表中创建/删除/更新记录,但是没有可用的进一步控制。AFAIK你不能告诉“让这个用户只更新他自己的记录”或“这个用户只能删除这个组中的记录”,或者“来自X组的用户只能更新他们自己的记录,而来自Y组的用户可以更新每个人的记录” 。

我对如何处理这类问题的理解是在用户和位于服务器上的数据库之间放置某种中间件应用程序,例如:桌面应用程序<----->服务器端应用程序权限处理程序< ----->数据库

服务器端权限处理程序可以像为每个查询添加“WHERE user = ...”以及更高级的东西一样简单(首先检查存储在数据库中的用户权限,根据该决定是否允许用户执行查询或拒绝它)。我认为这是所有桌面应用程序的常见问题,因此预计会存在这样的服务器端应用程序。我错过了一些明显的东西,或者PostgreSQL可以进行更详细的微调吗?

谢谢你的帮助 ;)

提问于
用户回答回答于

你的直觉是正确的。让客户端直接访问数据库永远不是一个好主意。看看Django https://www.djangoproject.comhttps://www.django-rest-framework.org 这将是您服务器端的基础。您将在此处理业务逻辑,身份验证和授权。客户端应该基本上在UI中呈现数据并将所有决策委托给服务器。

扫码关注云+社区

领取腾讯云代金券