自定义拦截器类继承HandlerInterceptorAdapter
重写其中的before方法
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class LoginInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean before(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) {
String tokenSNO = httpServletRequest.getHeader("xxx-Token");
if (UserInfoUtils.isLogin(token)){
return true;
}else {
throw new LoginException("未登录,请先登录");
}
}
@Override
public void after(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) {
}
@Override
public void complete(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
}
}
自定义异常拦截
自定义一个拦截handler处理异常
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class LoginExceptionHandler {
@ExceptionHandler({LoginException.class})
public JsonResult loginException(LoginException e) {
JsonResult jsonResult = JsonResult.getInstance();
jsonResult.setMessage("请先登录");
jsonResult.setCode("403");
return jsonResult;
}
}
public class LoginException extends BaseException {
public LoginException(String s) {
super(s);
}
public LoginException(String s, Object... objects) {
super(s, objects);
}
}
配置springMVC-servlet.xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/basepath/interfaces/**" />
<mvc:mapping path="/basepath1/interfaces/**" />
<bean class="com.xxx.xxx.xxx.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>