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