Spring JdbcTemplate - 如何将查询限制为 SELECT(s)?

发布于 2024-10-15 16:34:23 字数 122 浏览 4 评论 0原文

我正在编写一个使用 JdbcTemplate 并执行用户查询的程序。有没有办法通过 Spring JDBC 包将用户查询限制为 SELECT 语句?我不希望用户执行任何更新底层数据库的查询。

谢谢,
克特姆

I am writing a program that uses JdbcTemplate and executes a user query. Is there a way through the Spring JDBC package that I can restrict user queries to SELECT statements? I don't want users to execute any queries that update the underlying database.

Thanks,
ktm

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2024-10-22 16:34:23

Spring JDBC 无法自动为您执行此操作,您必须编写自己的适配器并确保所有代码都调用该适配器。

您是否考虑过使用数据库权限来实现您想要的?这取决于您希望安全性达到何种程度,但最好创建一个“应用程序”数据库用户,该用户是与数据库所有者帐户不同的帐户。然后,您可以为每个表授予适当的权限。

Spring JDBC can't do this for you automatically, you would have to write your own adapter and make sure that all your code calls the adapter.

Have you considered using DB privileges to achieve what you want? It depends on how granular you want your security to be, but its a good idea to create an 'application' database user that is a separate account from the database owner account. Then you grant the appropriate privileges on a per table basis.

回忆那么伤 2024-10-22 16:34:23

Spring Security 就是为此而设计的。它有一个用于处理访问的预定义​​表。

Spring security is designed for this. It has a predefined tables for handling access.

伏妖词 2024-10-22 16:34:23

如果可以选择,请考虑使用 JPA(Java Persistence API);查询对象具有单独的 getResultListgetSingleResult 方法,如果查询是 DELETE 或 UPDATE,则抛出异常(删除和更新仅通过 executeUpdate 处理)。

If you have the option, consider using JPA (Java Persistence API); the Query-objects have separate getResultList and getSingleResult -methods, which throw exceptions if the query is a DELETE or UPDATE (delete & update are handled only via executeUpdate).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文