2 回答

TA貢獻1816條經驗 獲得超4個贊
我不確定這一點,我必須檢查源,但是:可能是應用程序事件沒有為ExpiredJwtException
or發出SignatureException
。
可能的解決方案是:
自己發布事件:正如您提到的,您可以捕獲這些異常,因此一個簡單的解決方案是捕獲它們然后發出所需的事件。您只需要自動裝配
ApplicationEventPublisher
,然后調用publishEvent(event)
。使用 a
Filter
在一個地方捕獲和處理異常。
解決方案2示例:
public class AuthFailureFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
chain.doFilter(request, response);
} catch (ExpiredJwtException | SignatureException exception) {
handle(exception);
}
}
}

TA貢獻1878條經驗 獲得超4個贊
我認為發布ApplicationEvent
捕獲異常時最簡單的方法是使用ApplicationEventPublisher
. 無需ApplicationEvent
使用此方法來實現,因為它將任何對象包裝到PayloadApplicationEvent
您可以在其中使用ApplicationEventListener
并對其進行操作的 。這適用于 Spring 4.2,這里是官方鏈接:https : //spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2
添加回答
舉報