java - Spring:在上下文初始化之前显示静态页面以输入数据源密码

标签 java spring tomcat

我有一个 Spring 4.1.1 Web 应用程序。当前,数据源密码以明文形式存储在属性文件中。配置是:

<bean id="mainDataSource"
      class="com.mchange.v2.c3p0.ComboPooledDataSource"
      scope="singleton"
      destroy-method="close">
    <property name="driverClass"><value>${jdbc.driver}</value></property>
    <property name="jdbcUrl"><value>${jdbc.url}</value></property>
    <property name="user"><value>${jdbc.username}</value></property>
    <property name="password"><value>${jdbc.password}</value></property>
.
.
.
</bean>

我的客户不希望将密码存储在属性文件中,或者更一般地说,存储在服务器中。

理想的做法是让 Spring 显示一个安全网页以输入数据库密码。

最大的问题是我需要访问数据库来初始化上下文以及应用程序运行所需的几乎所有东西。所以问题是:

是否可以让 Spring 在上下文初始化之前显示一个网页,以便用户可以输入数据源密码?可能是通过过滤器之类的?

请注意,在属性文件中加密密码或在 Tomcat 启动时将其作为参数传递是行不通的,因为就安全性而言,它与在属性文件中没有太大区别.

最佳答案

我最终做的是将数据库密码设置到一个环境变量中,在spring配置文件中使用该变量,然后在启动后删除该变量。这很有效,而且似乎让客户很高兴。

要读取 spring_db.xml 中的环境变量,请使用此表达式,如果您有 Spring 3.0 及更高版本:

<property name="password"><value>#{systemEnvironment['variable_name']}</value></property>

关于java - Spring:在上下文初始化之前显示静态页面以输入数据源密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776355/

相关文章:

jsp - Servlet & Jsp - 谁能解释一下我的场景中发生了什么?

java - 事务注释在 Spring Boot 中不起作用

java - BigDecimal#min 方法是否符合 BinaryOperator 的条件?

java - 通用抽象类的自定义 Jackson 反序列化

java - HTTP 状态 415 – 使用 Angular js 的 Spring MVC 中出现不支持的媒体类型错误

web-services - 无法在 Tomcat Web 服务器(本地)上运行我的 Spring MVC 项目

java - 如何在Android Studio中使ImageButton可点击?

java - 动态规划过程

java - Spring-@Repository 和 @RepositoryRestResource 的区别和用例?

java - ServletContext.getRealPath() 是否适用于网络片段?