在写用户类接口的时候、有两个接口需要到管理员身份:
获取用户信息的接口() 、删除用户信息的接口()
都有被定义了 @PreAuthorize("@permission.admin()") 如图:

然后跑起项目、获取图灵验证码、登录账号、走这两接口的测试
首先是以管理员身份测试:如下图
删除成功(管理员身份)

获取用户信息成功(管理员身份)

管理员身份测试成功、没有出现问题!
接着测试普通用户来试试:
非管理员身份获取用户列表 : 权限不足 (没有问题、符合逻辑)

在这里出现问题了 如下图:

普通用户身份来删除用户信息的时候不管 UserId 是错误还是正确
Delete 请求都没有任何的返回信息
显示的是 405 METHOD_NOT_ALLIWED
老师写的对于错误信息的处理好像只有四个: 403 404 504 505
这个405没有被定义到
我就自己去定义了一下405




然后重新跑项目了、重新试了一下
以普通用户身份调用删除用户接口 还是为空 不应该是显示用户权限不足吗
怎么会是空的呢 同样是在普通用户的情况下 获取用户列表信息怎么就不会为空 而且正常的显示了 “权限不足”

怎么个情况呀 不敢随便乱改、管理员身份调用的时候正常、也是用的同一个判断类
因为判断是否为管理员身份的类中
只对GetMapping的判断 :如 GetMapping /403 /404 /504 /505
所以如果请求的是Put、Post 或者是、Delete的请求就处理不了啊
没对 Put、Post、Delete 进行处理
就如文章提出的问题 可以看出以普通用户身份去请求一些需要管理员身份的接口时候
有出现 权限不足的这一个返回数据 那个返回数据因为是GetMapping请求
有被定义所以有返回数据、 而Delete 就没有吧 问题就被找了
以管理员身份来请求的话 就不会走上面的步骤 会直接出数据
所以我们就去判断管理员的类写Post Put Delete 的处理 如下: 解决问题
package net.wzfBoke.blog.controller; import net.wzfBoke.blog.response.ResponseResult; import org.springframework.web.bind.annotation.*; /** * 错误码统一返回的结果 */ @RestController public class ErrorPagerController { @PostMapping("/403") public ResponseResult page403(){ return ResponseResult.ERROR_403(); } @PostMapping("/404") public ResponseResult page404(){ return ResponseResult.ERROR_404(); } @PostMapping("/405") public ResponseResult page405(){ return ResponseResult.ERROR_405(); } @PostMapping("/504") public ResponseResult page504(){ return ResponseResult.ERROR_504(); } @PostMapping("/505") public ResponseResult page505(){ return ResponseResult.ERROR_505(); } @DeleteMapping("/403") public ResponseResult pagedDelete403(){ return ResponseResult.ERROR_403(); } @DeleteMapping("/404") public ResponseResult pageDelete404(){ return ResponseResult.ERROR_404(); } @DeleteMapping("/405") public ResponseResult pageDelete405(){ return ResponseResult.ERROR_405(); } @DeleteMapping("/504") public ResponseResult pageDelete504(){ return ResponseResult.ERROR_504(); } @DeleteMapping("/505") public ResponseResult pageDelete505(){ return ResponseResult.ERROR_505(); } @PutMapping("/403") public ResponseResult pagedPut403(){ return ResponseResult.ERROR_403(); } @PutMapping("/404") public ResponseResult pagePut404(){ return ResponseResult.ERROR_404(); } @PutMapping("/405") public ResponseResult pagePut405(){ return ResponseResult.ERROR_405(); } @PutMapping("/504") public ResponseResult pagePut504(){ return ResponseResult.ERROR_504(); } @PutMapping("/505") public ResponseResult pagePut505(){ return ResponseResult.ERROR_505(); } @GetMapping("/403") public ResponseResult pagedGet403(){ return ResponseResult.ERROR_403(); } @GetMapping("/404") public ResponseResult pageGet404(){ return ResponseResult.ERROR_404(); } @GetMapping("/405") public ResponseResult pageGet405(){ return ResponseResult.ERROR_405(); } @GetMapping("/504") public ResponseResult pageGet504(){ return ResponseResult.ERROR_504(); } @GetMapping("/505") public ResponseResult pageGet505(){ return ResponseResult.ERROR_505(); } }以你现有的知识解决这个问题。
你是不是要定位问题出在哪里 呀?
是不是要判断有没有走到405的controller呀,你的contrller有没有写错,是不是@RestController,log不打一个呢?
如果没有走到,你会不会思考,是否有配置成功呀?
衔定位到问题出在哪里。