zoukankan      html  css  js  c++  java
  • Druid 数据库密码加密

    DruidDruiver和DruidDataSource都支持PasswordCallback

    Druid对密码的加密解密是自动实现的。

    1)对用户名密码加密

    java -cp D:/druid-1.0.27.jar com.alibaba.druid.filter.config.ConfigTools root

    java -cp D:/druid-1.0.27.jar com.alibaba.druid.filter.config.ConfigTools 123456

    执行完成以后会分别生成加密的用户密码以及对应的公钥和私钥。

    2)配置DruidConfig

    import com.alibaba.druid.filter.config.ConfigTools;
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.servlet.Filter;
    import javax.servlet.Servlet;
    import javax.sql.DataSource;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @author wuliang
     * @Date: 2020/12/14 下午8:16
     * @Desc: Druid数据源配置
     */
    @Configuration
    public class DruidConfig {
    
        private static String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJFM3pJymhYES9mQi3c23EIWuCZnCotO9NiyMaugiMY1FA6Kt4yIl9sszSklwldXWSTegCRkPCs4QePztcJWfb0CAwEAAQ==";
    
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druidDataSource() {
            DruidDataSource druidDataSource = new DruidDataSource() {
                //数据库密码加密
                @Override
                public void setPassword(String password) {
                    try {
                        password = ConfigTools.decrypt(publicKey, password);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    super.setPassword(password);
                }
            };
    
    //        druidDataSource.setPasswordCallback();
    //        druidDataSource.setPasswordCallbackClassName();
    //        druidDataSource.setConnectionProperties("config.decrypt=true;config.decrypt.key=${jdbc.publickey}");
            //配置字符集转码
            druidDataSource.addConnectionProperty("serverEncoding", "ISO-8859-1");
            druidDataSource.addConnectionProperty("clientEncoding", "GBK");
            return druidDataSource;
        }
    
    
        @Bean
        public ServletRegistrationBean<Servlet> statViewServlet() {
            ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
            // 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
            Map<String, String> initParams = new HashMap<>(16);
            initParams.put("loginUsername", "admin");
            initParams.put("loginPassword", "123456");
            initParams.put("allow", ""); //默认就是允许所有访问
    
            //deny:Druid 后台拒绝谁访问,表示禁止此ip访问
            // initParams.put("deny","192.168.10.132");
            bean.setInitParameters(initParams);
            return bean;
        }
    
        /**
         * 2、配置一个web监控的filter
         * http://localhost:8120/druid/login.html
         *
         * @return
         */
        @Bean
        public FilterRegistrationBean<Filter> webStatFilter() {
            FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
            bean.setFilter(new WebStatFilter());
    
            Map<String, String> initParams = new HashMap<>(16);
            initParams.put("exclusions", "*.js,*.css,/druid/*");
    
            bean.setInitParameters(initParams);
    
            bean.setUrlPatterns(Collections.singletonList("/*"));
            return bean;
        }
    
    
    }

    3)配置文件application.properties

    server.port=8120
    spring.application.name=ssm-api
    spring.profiles.active=dev
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driver-class-name=com.alibaba.druid.proxy.DruidDriver
    spring.datasource.url=jdbc:wrap-jdbc:filters=encoding:jdbc:oracle:thin:@192.168.192.254:1521:orcl
    spring.datasource.username=xtwy
    
    spring.datasource.password=X0EiFJKxEqgv3QUqX6OtngipMvPZPtPtImLKAheLosdbqsGYVy961IGeNcUM6zSM5NgX14mCJB3Ef+etv6kEIQ==
    #mybatis日志
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  • 相关阅读:
    冒泡排序法
    冒泡排序法
    【HAOI2008】圆上的整点
    2018年全国多校算法寒假训练营练习比赛(第四场)F:Call to your teacher
    (java)Jsoup爬虫学习--获取网页所有的图片,链接和其他信息,并检查url和文本信息
    CSS 选择器
    (java)selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出
    (java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待
    使用D3绘制图表(5)--水平柱状图表
    使用D3绘制图表(4)--面积图表
  • 原文地址:https://www.cnblogs.com/418836844qqcom/p/15010768.html
Copyright © 2011-2022 走看看