Grails 每用户数据库身份验证

标签 grails jdbc groovy

首先,我知道最佳做法是在您的 Web 应用程序中使用单个数据库用户帐户,以利用连接池来保持应用程序的良好响应。但是,由于要求(因为在任何情况下都不能更改此要求),我必须使用每个用户的数据库帐户对其进行身份验证。

上下文是一个在 Android 上运行的仓库管理应用程序,但它从我可能将要用 Grails 编写的 Web 服务获取数据,除非这里的建议向我展示了更适合的技术我的要求。由于应用程序的性质,用户可能一天只需要验证一次或两次,所以我想我可以简单地将连接保存在 HashMap 中,该 HashMap 由用户名的哈希码和密码连接而成。这应该允许应用程序保持与最佳实践相同或相似的性能水平。

现在,我的问题是使用持久连接对象。我知道如果不进行大量自定义,我将无法将它们与 GORM 一起使用,所以我计划将它们与 groovy.sql.Sql 一起使用,效果很好,因为大部分业务逻辑都在 PL/SQL 包中无论如何。

我的问题是 groovy.sql.Sql 类如何处理它的 Connection 对象?我会遇到连接被它关闭的问题吗?或者我可以安全地使用我的 HashMap 来持久化连接吗?

最佳答案

groovy.sql.Sql 不会关闭你的连接。在类规范中,您可以找到:

If this SQL object was created with a Connection then this method closes the connection.

所以如果您想自己做事,而不是完全信任 Hibernate,那么 SQL 类真的很重要。虽然,我认为您可以使用 Spring 的 UserCredentialsDataSourceAdapter 作为您的解决方案。它使用 ThreadLocal 为每个线程设置凭据,因此调用:UserCredentialsDataSourceAdapter.setCredentialsForCurrentThread(String username, String password)

会解决。您可以尝试其他方法 here .

关于Grails 每用户数据库身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007491/

相关文章:

javascript - angular.ui DatePicker 如何设置日期格式?

java - 检查 Oracle 数据库中是否存在用户 - java jdbc

gradle - 重用config.groovy中的环境

jquery - 使用 AJAX 在表格中显示值

grails - FontAwesome 与 Grails <g :actionSubmit

grails - Controller 中的每次更改后,Grails项目都需要重新启动

Java.sql.connection 对象第二次不工作

java - 无法通过 JDBC 连接到虚拟机上的 Oracle 11g : Connection reset

jenkins - 如何在 jenkinsfile 中一次运行 4 个 for 20 个项目的 for 循环

grails - Grails:如何从域中选择特定值