一、该问题的重现步骤是什么?
我有如下的一个Controller类和一个接口。
@Slf4j @RestController @RequestMapping("/termite/survey/dike-units") @Api(tags = "堤防工程单元管理") public class DikeProjectUnitController { @Autowired private IDikeProjectUnitService dikeProjectUnitService; @Autowired private ITbResDykeService dikeService; /** * 删除 * * @param guid * @return */ @PostMapping("/deleteById") @ApiOperation("删除记录") public Rdelete(@RequestParam Long guid) { try { return R.data(dikeProjectUnitService.removeById(guid)); } catch (Exception e) { log.error(getStackString(e)); return R.data(false); } } }
2. 当我将接口声明成为@PostMapping的时候,接口是正常工作的。 如果我将接口声明成@DeleteMapping的时候,前端访问接口的时候会报出403 Forbidden的错误。
3. 我知道是权限的问题。 但是没有找到哪里可以配置或者控制。
二、你期待的结果是什么?实际看到的又是什么?
期望结果: 当我使用delete类型的rest接口进行访问的时候, 接口功能正常。
实际结果: 403 Forbidden
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex 2.1.x
Java jdk版本: Java 11
操作系统: 国产麒麟系统, 类似于Linux。 这个问题应该和系统无关。
四、请提供详细的错误堆栈信息,这很重要。
前端直接报出 403。 然后我看了gateway的日志, 好像是没有这个接口的访问记录(这也是一个我奇怪的地方)。
五、若有更多详细信息,请在下面提供。
暂无。
就是在浏览器上面会报错。其余任何地方都没没有错误日志。
xhr.js:195 DELETE http://localhost:1888/api/blade-termite-survey/termite/survey/reservoir-units/deleteByld?guid=1963149469900455938 403 (Forbidden)
附上前端的代码:
removepcxxData(row) { console.log("row", row) var index = this.form1.pcdyxxTbList.indexOf(row) if (index !== -1) { this.form1.pcdyxxTbList.splice(index, 1) } console.log, ("pcdyxxTbList", this.form1.pcdyxxTbList) const params = {}; params.guid = row.guid; postdeleteDfEngineerApi(params).then(res => { console.log("res", res) if (res) { var index = this.form1.pcdyxxTbList.findIndex(item => item.guid === params.guid) if (index !== -1) { console.log('params.guid', params.guid); this.form1.pcdyxxTbList.splice(index, 1) } } }) },
export const postdeleteDfEngineerApi = (params) => { return request({ // url: "/api/blade-termite-survey/termite/survey/dike-units/deleteById", url: "/api/blade-termite-survey/termite/survey/dike-units/deleteById", method: "delete", params, }); };
用postman调用接口试试,然后用一个原生的springboot项目,把你的代码拷贝过去再调用试试