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

时间:2016-03-03 15:32:12

标签: 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显示一个安全的网页来输入数据库密码。

最大的问题是我需要访问db来初始化上下文以及应用程序工作所需的几乎所有内容。所以问题是:

是否可以让Spring在上下文初始化之前显示网页,以便用户可以输入数据源密码?也许通过过滤器或什么?

请注意在属性文件中加密密码或将其作为参数传递给Tomcat启动时不会这样做,因为它与在属性文件中使用它没有太大区别,因为它与安全性有关

1 个答案:

答案 0 :(得分:0)

我最终做的是将数据库密码设置为环境变量,使用spring配置文件中的变量,然后在启动后删除变量。这很有效,似乎让客户满意。

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

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