• Home
  • Archives
  • 随笔
所有文章 友链 关于我

  • Home
  • Archives
  • 随笔

el-admin从0开始搭建踩过的坑和总结

发布于: 2021-03-20
更新于: 2023-07-09

el-admin

基于 vue+springboot 的全栈脚手架,详细信息可以 google 和百度,这里借用这个脚手架学习 spring 以及完成自己想要的一些功能

MySQL坑

赋权

Mysql8后的赋予权限时,无需在写用户密码,只要按照类似下面的执行即可

CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

踩过的坑记录

  • SpringSecurity 的 BadCrential

这个会有很多种情况,像帐号问题,加密问题,数据库存储的是加密字符串 etc。这里说一个场景是在 eladmin 操作界面把数据库密码改了,然后登录时忘记了这茬。= & = 一直用 123456 继续登录,导致悲剧的发生哭了。

可以通过 debug 找到是

    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        if (rawPassword == null) {
            throw new IllegalArgumentException("rawPassword cannot be null");
        } else if (encodedPassword != null && encodedPassword.length() != 0) {
            if (!this.BCRYPT_PATTERN.matcher(encodedPassword).matches()) {
                this.logger.warn("Encoded password does not look like BCrypt");
                return false;
            } else {
                // qiao:此处会发现密码不对,就能找到问题了,后面就是对数据库加密字符串解密看看设置的是啥在处理下就解决了
                return BCrypt.checkpw(rawPassword.toString(), encodedPassword);
            }
        } else {
            this.logger.warn("Empty encoded password");
            return false;
        }
    }
  • redis 集群握手失败

每个 redis 集群节点都需要打开两个 TCP 链接,用于给 client 提供服务的 redis tcp 端口,比如说 6379,加上通过向数据端口添加 10000 获得的端口,比如 6379 的数据向端口为 16379
第二个高端口用于集群总线,做故障检查,配置更新,故障转移授权 etc。
如果是用云服务器的,应注意这些端口是否有打开

  • idea 启动失败,报端口已被占用
netsh int ipv4 set dynamicport tcp start=49152 num=16383
netsh int ipv4 set dynamicport udp start=49152 num=16383
# 如果上面两个不行,就用下面的大招
net stop winnat
net start winnat
  • Unable to find a @SpringBootConfiguration when doing a JpaTest

    问题原因,单元测试类的包路径与启动类的包路径不在同一个目录下,这里可以选择放同一个包路径下或者自行指定启动类

20210320215102

  • 链接 redis 数据库时报错

    把 redis.database 和.host 搞混了,database 是指 redis 的分库概念,比如哨兵是 0-15 一共 16 个分库,正常选 0 库即可。而 host 是指 redis 的 ip

20210320215302

  • JUnit测试提示Java.lang.Exception: No runnable methods

    包引用问题,换成 org.junit 即可解决

20210320215616

  • redis 链接失败 > 需要自行配置 redis 相关配置,在 application-dev.xml 里面配置
    20210320221933
  • 如果是云主机
    • 注意看下控制台设置了端口开放了没,然后就是记得每一个 redis 节点都需放开 bind 才能远程连接

必备的配置项

  • redis 集群设置密码

    记得给所有节点都加上密码
    20210320223019

  • 搭建 redis 集群

redis-cli --cluster create 193.112.28.19:6379 193.112.28.19:6378 193.112.28.19:6377 193.112.28.19:6376 193.112.28.19:6375 193.112.28.19:6374 --cluster-replicas 1
  • 加解密配置项密码

    • 资源引入
            <!--加密解密jasypt-->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>${jasypt.version}</version>
        </dependency>
    
    • 配置文件中配置沙子

      此处注意,为了防止沙子外泄,建议是作为命令行启动防止泄露,或者放到配置中心等

    #  加解密内容的沙子,加密解密的关键钥匙,通过命令行启动,避免上传到服务器上导致被破解
    # 启动命令为: java -Djasypt.encryptor.password="password" -jar my-application.jar
    #jasypt:
    #  encryptor:
    #    password:
    
    • 加解密的测试类
    /**
     * 测试jasypt加解密$
     * <p>
     * 创建时间: 2021/3/20 21:32
     * 博客地址: <a href="https://tyrantqiao.com">详情戳我(╯‵□′)╯︵┻━┻)</a>
     *
     * @author tyrantqiao
     * @version 1.0
     **/
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class TestEncryCode {
        @Autowired
        private StringEncryptor stringEncryptor;
    
        /**
         * 加密解密密码
         */
        @Test
        public void testEncryPassword() {
            extracted("test");
        }
    
        private void extracted(String needEncryStr) {
            String encryptStr = stringEncryptor.encrypt(needEncryStr);
            assert !StringUtils.isEmpty(encryptStr);
            String decryptResult = stringEncryptor.decrypt(encryptStr);
            assert decryptResult.equals(needEncryStr);
    
            System.out.println(encryptStr);
            System.out.println(decryptResult);
        }
    
        @Test
        public void contextLoads() {
        }
    }
    
el-admin从0开始搭建踩过的坑和总结
/archives/db177fc8/
作者
tyrantqiao
发布于
2021-03-20
更新于
2023-07-09
许可协议
CC BY-NC-SA 4.0
赏

蟹蟹大佬的打赏,大家一起进步

支付宝
微信
  • java
  • mysql
  • 前端
  • redis
  • vue

扫一扫,分享到微信

微信分享二维码
如何更好地表达呢?
第一次线上演讲
© 2024 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 所有文章
  • 友链
  • 关于我

tag:

  • 复盘
  • 我
  • 规划
  • java
  • 面试
  • 源码
  • 架构
  • Hadoop
  • HTTP
  • TCP
  • 学习笔记
  • IDEA
  • maven
  • idea
  • Java
  • jdk
  • 面经
  • linux
  • 爱情
  • mysql
  • 性能
  • sql
  • Mysql
  • JAVA
  • 技术
  • Redis
  • MQ
  • Spring
  • 数据库
  • TIDB
  • spring
  • unity
  • chatgpt
  • 经验分享
  • 前端
  • redis
  • vue
  • git
  • shadowsocks
  • hexo
  • blog
  • bug
  • 开发
  • 业务
  • jvm
  • 算法
  • MySQL
  • nginx
  • Linux
  • mq
  • db
  • springCloud
  • ssh
  • python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 性格
  • 音乐
  • 程序员
  • 随笔
  • mybatis
  • 演讲
  • 域名
  • 猫咪
  • 她
  • github
  • 计划
  • 旅游
  • 软件
  • 心理
  • 情商
  • 幽默
  • 才艺
  • 穿搭
  • 编程
  • 排序
  • 查找
  • 缓存
  • 网络
  • 设计模式
  • c
  • 课程设计
  • centos
  • 数学
  • 本网站主题yilia设计者的主页
如果有问题或者想讨论的可以联系[email protected]或者[email protected]