網上關於攔截器的描述和使用已經很詳細了,我就再也不贅述了前端
場景描述:後臺的對外開放的接口須要進行校驗是否登陸,若是未登陸則要進行攔截,我想作的是直接返回http請求,但攔截器的返回值是boolean型的,網上的描述都是要指定跳轉界面的,但這不是我想要的,如下是個人代碼模塊java
if (handler instanceof HandlerMethod) { // 我本身寫了自定義註解 NeedLogin login = ((HandlerMethod) handler).getMethodAnnotation(NeedLogin.class); if (login != null) { String accessToken = request.getHeader(ProductConstants.HttpHeader.ACCESS_TOKEN); // token值不存在,則須要進行登陸 if (accessToken == null) { // 設置狀態碼,併發送錯誤信息,下同 response.sendError(HttpStatus.UNAUTHORIZED.value(), "No authority. login first,please!"); return false; } else { // 判斷是否須要登陸 boolean needLogin = this.needLogin(accessToken); if (needLogin) { response.sendError(HttpStatus.UNAUTHORIZED.value(), "No authority. login first,please!"); return false; } } } }
這樣作的話就能夠不用作指定界面跳轉了,而是經過sendError的方式,返回json信息給前端。由於對於先後端分離的系統,是不能在後臺指定跳轉界面的。json