我想通过使用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的东西在我的终端中没有被处理。事实上,我没有看到它让我觉得有什么东西可以处理它,但我不想。有什么建议吗?
1条答案
按热度按时间sycxhyv71#
了解
AccessDeniedException
处理异常时,请使用调试器。创建处理程序方法并使其引发异常。将断点放在
throw
陈述现在,逐步完成代码,备份调用堆栈,直到找到处理异常的代码和“viola!”,你有你的答案。它通常是通过方法来处理的
handleSpringSecurityException(...)
课堂上ExceptionTranslationFilter
.如果用户未登录(匿名)或使用RememberMe登录,则登录过程将启动。
否则
AccessDeniedHandler
被调用。默认处理程序将以403禁止响应,显示错误页面。无论如何,您自己在代码中进行调试,以确切了解在设置中如何处理异常。