zoukankan      html  css  js  c++  java
  • jhipster生成项目无法使用restful请求,报access_denied 403错误

    写在前边:

    我们的微服务是注册中心、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项目中查看源码,找到gatewaysrcmainjavacomshunnenggatewayconfig下的MicroserviceSecurityConfiguration.java

    找到如图方法

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

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

     效果验收:

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

    尾声:

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

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

     

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

  • 相关阅读:
    AS3的内存泄漏与垃圾回收
    Unity序列化和持久化
    首发|创业3年半,做8款App全部扑街;转做公众号5个月,零成本吸粉12万还拿了百万天使轮
    为什么成功的人都不太要脸?
    浅谈2040年的职业环境应该是怎么样的?
    2040年的职业环境应该是怎么样的?
    潮汕牛肉火锅,美味在你身边
    要闻:2016胡润百富榜昨天发布 宝能姚振华从炸油条到千亿身家“大黑马”
    海报设计灵感:简约独特的图形图案排版 by Quim Marin
    摄影的基础美学详解
  • 原文地址:https://www.cnblogs.com/hellxz/p/8757552.html
Copyright © 2011-2022 走看看