找不到谁处理accessdeniedexception

i7uq4tfw  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(265)

我想通过使用jwt来保护我的应用程序。我不知道如何实现逻辑,所以我从github上的这个项目中获得了一切(好吧,只有安全文件夹)。
我还有一个自定义的全局错误控制器

@RestControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler

该应用程序似乎工作正常,但当我尝试在没有令牌的端点上执行请求时,我没有得到异常,因此我的globalexceptionhandler被跳过,并得到如下默认错误响应表单

{
  "timestamp": "2021-07-07T00:02:54.024+00:00",
  "status": 403,
  "error": "Forbidden",
  "message": "Access Denied",
  "path": "/profile"
}

我真的不知道是谁处理了这个错误,因为我在我的终端上除了从

: Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-07-07 03:25:11.071  INFO 19971 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-07-07 03:25:11.074  INFO 19971 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 3 ms

我也尝试了一些人建议的这种方法。另外,仅在globalexceptionhandler上添加accessdeniedexception的处理程序也不起作用。我想我应该看到一些关于accessdeniedexception的东西在我的终端中没有被处理。事实上,我没有看到它让我觉得有什么东西可以处理它,但我不想。有什么建议吗?

sycxhyv7

sycxhyv71#

了解 AccessDeniedException 处理异常时,请使用调试器。
创建处理程序方法并使其引发异常。将断点放在 throw 陈述现在,逐步完成代码,备份调用堆栈,直到找到处理异常的代码和“viola!”,你有你的答案。
它通常是通过方法来处理的 handleSpringSecurityException(...) 课堂上 ExceptionTranslationFilter .
如果用户未登录(匿名)或使用RememberMe登录,则登录过程将启动。
否则 AccessDeniedHandler 被调用。默认处理程序将以403禁止响应,显示错误页面。
无论如何,您自己在代码中进行调试,以确切了解在设置中如何处理异常。

相关问题