首页 技术 正文
技术 2022年11月11日
0 收藏 445 点赞 3,226 浏览 1024 个字

写在前边:

我们的微服务是注册中心、uaa、gateway为基础,添加微服务应用,昨天下午在测试jhipster的增删改查,因为jhipster生成的代码都是restful的,好不容易找到网关配置的映射路径,测试get请求是可以的,但是post、put、delete都不行。查资料发现是springboot中整合的spring security的锅,点这里直接看问题解决办法

问题重现:

进入网关,本地测试:http://localhost:8080,发现微服务应用的ip映射到了/test/**路径

因为使用了spring-security,所以,请求的时候需要token,如果header中没有Cookie值,请求会被拦截,我们必须在同一个浏览器中使用postman插件,才能获取相同的token,注意打开postman的interceptor(客户端请百度参考,本人放弃治疗了……)

记得必须登录一下gateway,否则也是没有token的

使用get请求测试下:

看图片是正常的,我之前在这个微服务中的h2-console中插了几条数据,访问http://localhost:微服务应用的端口/h2-console         默认没有密码,直接点连接即可进入控制台

测试一下post请求:(忽略那个jhipster环境,啥也没配)

访问拒绝,报403错误

问题解决:

考虑到所有应用都是通过网关进行通讯的,如图

去gateway项目中查看源码,找到gateway\src\main\java\com\shunneng\gateway\config下的MicroserviceSecurityConfiguration.java

找到如图方法

在方法体最下添加代码:http.csrf().disable();    如图

保存,ctrl+c关闭gateway项目,mvnw重启一下

效果验收:

测试一下删除,注意为防止token过期,刷新localhost:8080 页面,如未登录请登录,然后继续

尾声:

这种方法的确很好的解决了这个问题,但是这里就会导致一个问题,之前spring-security这样拦截是为了防止恶意攻击,这样所有的restful请求都放通了,可能会导致不安全。

文中修改配置文件中的放行是我自己配的,组长说这样可以保证安全,亲测无用,感觉二者并无什么区别,但是如果我没有登录这个微服务的gateway,我根本都访问不了好嘛:P

如果有更好的办法,欢迎评论拍砖!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,988
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,503
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,348
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,131
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,765
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,842