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
添加回答
举报