首页 > 代码库 > spring 加密 Druid 连接池(二)—— 加密 url,driverClassName,用户名,密码
spring 加密 Druid 连接池(二)—— 加密 url,driverClassName,用户名,密码
why?
连接信息暴露在配置文件中有风险
how?
一、准备加密后连接信息
使用Druid自带工具类ConfigTools加密连接信息
import com.alibaba.druid.filter.config.ConfigTools; public class DecryptDruid { public DecryptDruid() { super(); // TODO Auto-generated constructor stub } public static void main(String[] args){ DecryptDruid dp = new DecryptDruid(); String[] myUserPass ={url,driverclassname,username,password}; for(int i = 0;i < myUserPass.length();i++){ dp.testDecrypt(dp.testEncrypt(myUserPass)); } } /** * 对文字进行解密 * @throws Exception */ public String testDecrypt(String encry){ //解密 String word=encry; String decryptword=""; try { decryptword = ConfigTools.decrypt(word); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println(decryptword); return decryptword; } /** * 文字进行加密 * @throws Exception */ public String testEncrypt(String userpass) { //加密 String encryptword = ""; try { encryptword = ConfigTools.encrypt(userpass); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println(encryptword); return encryptword; } }
二、准备解密方法类
继承DruidDataSource,覆盖父类连接信息set方法
import com.alibaba.druid.filter.config.ConfigTools; import com.alibaba.druid.pool.DruidDataSource; @SuppressWarnings("serial") public class EncryptDruidDataSource extends DruidDataSource{ @Override public void setUrl(String url){ try { url = ConfigTools.decrypt(url); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setUrl(url); } @Override public void setDriverClassName(String driverClassName){ try { driverClassName = ConfigTools.decrypt(driverClassName); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setDriverClassName(driverClassName); } @Override public void setUsername(String username){ try { username = ConfigTools.decrypt(username); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setUsername(username); } @Override public void setPassword(String password){ try { password = ConfigTools.decrypt(password); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setPassword(password); } }
三、更改配置文件
将加密后连接信息加入配置文件
filters=config
四、更改dataSource配置
<bean id="dataSource" class="com.**.**.EncryptDruidDataSource" destroy-method="close">
添加:
<property name="connectionProperties" value="http://www.mamicode.com/config.decrypt=true;" />
OK!
不过,配置mybatis会有databaseid not found问题,如有解决者,望赐教!
spring 加密 Druid 连接池(二)—— 加密 url,driverClassName,用户名,密码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。