現象
在 WebSecurityConfigurerAdapter 配置了如下代碼:
在 Controller 層 REST 接口中添加有 @PreAuthorize 注解:
通路接口 /hello,報服務端 500 錯誤,沒有執行我們設定的 accessDeniedHandler 來處理權限不足的異常。
原因
@PreAuthorize 注解的異常,抛出 AccessDeniedException 異常,不會被 accessDeniedHandler 捕獲,而是會被全局異常捕獲。全局異常處理 AccessDeniedException 的相關示例代碼:
如果需要被 accessDeniedHandler 捕獲處理,則需要這麼寫 WebSecurityConfigurerAdapter 的代碼: