之前做了一个简单的登录验证,使用了Filter实现,返回内容是直接写死在Filter里面。今天为了统一返回,想通过抛出异常方式,使用ControllerAdvice进行返回。结果是不行的,ControllerAdvice无法获取到Filter的异常。
原因:
请求进来 会按照 filter -> interceptor -> controllerAdvice -> aspect -> controller的顺序调用
当controller返回异常 也会按照controller -> aspect -> controllerAdvice -> interceptor -> filter来依次抛出
因此,如果要实现利用ControllerAdvice输出未登录状态,必须使用aspect 这种方式