TA的每日心情 | 无聊 昨天 09:05 |
---|
签到天数: 1050 天 连续签到: 1 天 [LV.10]测试总司令
|
测试的项目为本人参照学习passjava项目源码搭建的,搭建了有:
1)renren-fast 后端快速开发框架
2)renren-fast-vue 前端框架
3)gateway与nacos 将模块注册进nacos,并且配置配置文件中心,将renren-fast收到的请求通过网关路由到不同模块上
4)passjava-question 题目服务,支持题目列表展示、新增题目类型等。
5)passjava-thirdparty 使用阿里云OSS存储图片
问题描述:
以下问题按顺序出现:
启动前端登录界面,不显示验证码图片
renren-fast-vue的前端页面是用renren-fast作为后端服务器,验证不显示那肯定就是后端的问题。
· bug原因:
renren-fast的代码中配置了跨域访问规则,但是我们已经把renren-fast这个模块的服务注册进了nacos,并且用gateway网关来实现了路由规则。所以当前端页面发起请求时,原来配置跨域访问规则就不会生效了,此时验证码就不会被获取到。
· 解决办法:
在gateway模块,自己配置跨域访问规则。代码如下:
- @Configuration
- public class PassJavaCorsConfiguration {
- @Bean
- public CorsWebFilter corsWebFilter() {
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- CorsConfiguration corsConfiguration = new CorsConfiguration();
- // 配置跨域
- corsConfiguration.addAllowedHeader("*"); // 允许所有请求头跨域
- corsConfiguration.addAllowedMethod("*"); // 允许所有请求方法跨域
- corsConfiguration.addAllowedOrigin("*"); // 允许所有请求来源跨域
- corsConfiguration.setAllowCredentials(true); //允许携带cookie跨域,否则跨域请求会丢失cookie信息
- source.registerCorsConfiguration("/**", corsConfiguration);
- return new CorsWebFilter(source);
- }
- }
复制代码 正确显示出验证码了之后,输入登录信息,点击登录没有反映
F12打开浏览器开发工具–控制台,发现报错信息如下:
报错信息大概意思是,Access-Control-Allow-Origin这个请求头有多个值,但是只允许有一个值。这个请求头参数的名字是有关于权限控制的,那么就想起我们之前配置跨域访问了。
· bug原因:
由于我们在renren-fast这个模块内部配置了跨域访问规则,又在gateway模块中配置跨域访问规则,导致两者冲突。
· 解决办法:
将renren-fast这个模块中的跨域访问规则删除或者注释掉即可。
成功登录后,进入题目中心—类型配置界面,看不到新增类型和批量删除的按钮
· bug原因:
找到控制这两个按钮的前端页面,发现有权限控制,权限不够无法看到这些按钮。
· 解决办法
直接将权限认证的方法返回true即可(这里是为了测试方便,如果在生产环境中,后台管理的账号需要做权限校验,根据账号的权限来显示可操作的菜单)。
题目中心—类型配置界面,点击新增,弹出的输入框没有显示上传图片的按钮。
· bug原因:
这里就不展示了,passjava的源码里面是没有文件上传的代码的,需要在passjava的教程中获取,并复制到前端代码中。教程里面都有,这里就不再赘述。
点击上传图片后,上传列表不显示,点击确认,提示图片url为空
· bug原因:
从前端的代码来看,是没有正确的获取到数据 。
· 解决办法:
经过测试,把下面这段代码的data删掉即可。
成功显示上传图片列表了之后,不显示上传缩略图
· bug原因:
因为我使用的是阿里云的OSS服务来存储图片,在bucket配置中,我将bucket配置成了私有访问。
· 解决办法:
将bucket配置成公共读即可。
|
|