攔截器工做筆記

網上關於攔截器的描述和使用已經很詳細了,我就再也不贅述了前端

場景描述:後臺的對外開放的接口須要進行校驗是否登陸,若是未登陸則要進行攔截,我想作的是直接返回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

相關文章
相關標籤/搜索