Closed TRLVMMR closed 4 years ago
先声明,由于本人使用的是同学下载的master分支,没有下载稳定版本,因此有些功能可能作者还在开发,也可能bug已经在新的提交中解决。因此下面的bug仅供参考。
本人由于课程需求,下载了此系统进行系统二次开发,下面细数遇到的一些bug。
(此问题作者可以无视,并不是作者的错),由于作者使用session进行验证码验证。但由于我此前在本域名下是https的服务器,因此导致,chrome浏览器给出以下警告 其他表单字段全部有效,唯独这个,chrome不提交的话,每次的session都是同一个session,自然无法登陆。本人尝试修改cookie作用域后仍然无效,查到的原因貌似是是chrome认识JSESSIONID这个前缀,如果这个值不是在https上就不提交。 解决方法:更改tomcat的sessionid前缀,
server: servlet: session: cookie: secure: false http-only: false name: sessionid
如下图,由于作者的点赞中,使用的是this.update。总所周知,AOP无法拦截内部调用,导致这次调用无法被拦截,如果一定要,需要先获取代理。类似的还有几处,就不一一指出。
我觉得作者有一个厉害的地方,就是把redis写成插件,无侵入,可随时移除。不过,这里也有一个bug。由于作者在使用redis时,基本都是以下操作
JedisPool instance = this.instance(); if (instance == null) return null; jedis = instance.getResource();
虽然作者每次都判断实例是否为空,但是有可能实例不为空,但在执行getResource方法时却出现redis异常。出现异常会发生什么?那就是,一些AOP中,有使用redis的,全部无法正常工作!因此每次都在执行service逻辑之前就遇到redis异常,因此每次返回值都为空,页面无法正常显示。
重现场景:在管理页面配置一个地址无效的redis。或者直接把系统的redis关掉。
忘了。。。如果有空,下次找找再补上。另外吐槽下作者的数据库设计,比如点赞表,居然第一范式都不遵守,一个字段保存多个值,不过好处也很明显,容易直接读到缓存。。本人点赞喜欢用redis持久化,是写了mybatis插件,然后把点赞表移到redis中,然后把此字段删除。。。不过这样的话,感觉我在暴殄作者的redis插件。。
感谢反馈
先声明,由于本人使用的是同学下载的master分支,没有下载稳定版本,因此有些功能可能作者还在开发,也可能bug已经在新的提交中解决。因此下面的bug仅供参考。
本人由于课程需求,下载了此系统进行系统二次开发,下面细数遇到的一些bug。
1 验证码无法验证问题,session无效
(此问题作者可以无视,并不是作者的错),由于作者使用session进行验证码验证。但由于我此前在本域名下是https的服务器,因此导致,chrome浏览器给出以下警告 其他表单字段全部有效,唯独这个,chrome不提交的话,每次的session都是同一个session,自然无法登陆。本人尝试修改cookie作用域后仍然无效,查到的原因貌似是是chrome认识JSESSIONID这个前缀,如果这个值不是在https上就不提交。 解决方法:更改tomcat的sessionid前缀,
2 AOP没有生效问题
如下图,由于作者的点赞中,使用的是this.update。总所周知,AOP无法拦截内部调用,导致这次调用无法被拦截,如果一定要,需要先获取代理。类似的还有几处,就不一一指出。
3 Redis获取时的BUG
我觉得作者有一个厉害的地方,就是把redis写成插件,无侵入,可随时移除。不过,这里也有一个bug。由于作者在使用redis时,基本都是以下操作
虽然作者每次都判断实例是否为空,但是有可能实例不为空,但在执行getResource方法时却出现redis异常。出现异常会发生什么?那就是,一些AOP中,有使用redis的,全部无法正常工作!因此每次都在执行service逻辑之前就遇到redis异常,因此每次返回值都为空,页面无法正常显示。
重现场景:在管理页面配置一个地址无效的redis。或者直接把系统的redis关掉。
4 其他
忘了。。。如果有空,下次找找再补上。另外吐槽下作者的数据库设计,比如点赞表,居然第一范式都不遵守,一个字段保存多个值,不过好处也很明显,容易直接读到缓存。。本人点赞喜欢用redis持久化,是写了mybatis插件,然后把点赞表移到redis中,然后把此字段删除。。。不过这样的话,感觉我在暴殄作者的redis插件。。