我正在编写一个使用JdbcTemplate并执行用户查询的程序。有没有办法通过Spring JDBC包我可以将用户查询限制为SELECT语句?我不希望用户执行任何更新底层数据库的查询。
谢谢,
KTM
答案 0 :(得分:4)
Spring JDBC无法自动为您执行此操作,您必须编写自己的适配器并确保所有代码都调用适配器。
您是否考虑过使用数据库权限来实现您的目标?这取决于您希望安全性的粒度,但最好创建一个“应用程序”数据库用户,该用户是与数据库所有者帐户不同的帐户。然后,您可以基于每个表授予适当的权限。
答案 1 :(得分:1)
Spring安全性就是为此而设计的。它有一个用于处理访问的预定义表。
答案 2 :(得分:0)
如果您有选择,请考虑使用JPA(Java Persistence API); Query-objects具有单独的 getResultList 和 getSingleResult -methods,如果查询是DELETE或UPDATE则抛出异常(删除和更新仅通过 executeUpdate处理) )。