添加Spring MVC攔截器

使用場(chǎng)景:通常我們需要對(duì)每一個(gè)請(qǐng)求進(jìn)行過濾,比如權(quán)限或者是登錄狀態(tài)(token),此時(shí)我們不必再每個(gè)請(qǐng)求中傳遞token和username這兩個(gè)參數(shù),可以將其放在HttpServletRequest對(duì)象愕撰,然后從中獲取览露,再使用spring mvc的攔截器進(jìn)行驗(yàn)證,成功則返回true丽惶。

1.下面我們以token攔截器為例:創(chuàng)建攔截器TokenInterceptor.java

package com.a.b.common.web.interceptor;

import com.a.b.common.util.AccessRestProxy;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * token登錄攔截器
 * <p>
 * <code>HandlerInterceptorAdapter</code>
 * </p>
 *
 * @author Mcchu
 * @version 1.0 @date 2017-07-27
 * @since 1.0
 */
public class TokenInterceptor extends HandlerInterceptorAdapter {

    private static final Log log = LogFactory.getLog(TokenInterceptor.class);

    private static final String NO_AUTHORITY_ACTION = "/tokenInvalid";

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{
        String userAccount=request.getParameter("userAccount");
        String token=request.getParameter("token");
        Boolean hasToken = AccessRestProxy.hasToken(userAccount,token);
        if (hasToken){
            log.info("token驗(yàn)證通過");
            return true;
        }else {
            response.sendRedirect(request.getContextPath() + NO_AUTHORITY_ACTION);
            log.info("token驗(yàn)證失敗炫七,沒有權(quán)限");
            return false;
        }
    }

}

2.token驗(yàn)證失敗重定向到一個(gè)返回失敗信息的請(qǐng)求路徑:

    /**
     * Token驗(yàn)證失敗返回信息
     * @return
     */
    @GetMapping("/tokenInvalid")
    @ResponseBody
    public ResponseEntity<ResponseVo<String>> noTokenAuthority(){
        ResponseVo<String> responseVo = new ResponseVo<>("false", GpsMsgKey.getTipMsg("no_authority"), "Token驗(yàn)證失敗,請(qǐng)重新登陸");
        ResponseEntity<ResponseVo<String>> responseEntity = new ResponseEntity<ResponseVo<String>>(responseVo, HttpStatus.OK);
        return responseEntity;
    }

3.mvc攔截器設(shè)置钾唬,spring mvc配置文件里:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/gps/setting/getGPSSetting"/>
            <mvc:mapping path="/gpsDateCtl/uploadGPS/"/>
            <mvc:mapping path="/gps/law/getLaw"/>
            <mvc:mapping path="/gps/user/setting/isValidGPS"/>
            <mvc:exclude-mapping path="/resources/**" />
            <bean class="com.a.b.common.web.interceptor.TokenInterceptor" />
        </mvc:interceptor>-->
    </mvc:interceptors>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末万哪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抡秆,更是在濱河造成了極大的恐慌奕巍,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儒士,死亡現(xiàn)場(chǎng)離奇詭異的止,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)着撩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門诅福,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匾委,“玉大人,你說我怎么就攤上這事氓润÷咐郑” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵咖气,是天一觀的道長(zhǎng)挨措。 經(jīng)常有香客問我,道長(zhǎng)采章,這世上最難降的妖魔是什么运嗜? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮悯舟,結(jié)果婚禮上担租,老公的妹妹穿的比我還像新娘。我一直安慰自己抵怎,他們只是感情好奋救,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著反惕,像睡著了一般尝艘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姿染,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天背亥,我揣著相機(jī)與錄音,去河邊找鬼悬赏。 笑死狡汉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闽颇。 我是一名探鬼主播盾戴,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兵多!你這毒婦竟也來(lái)了尖啡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剩膘,失蹤者是張志新(化名)和其女友劉穎衅斩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怠褐,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矛渴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片具温。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚕涤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铣猩,到底是詐尸還是另有隱情揖铜,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布达皿,位于F島的核電站天吓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏峦椰。R本人自食惡果不足惜龄寞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汤功。 院中可真熱鬧物邑,春花似錦、人聲如沸滔金。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)餐茵。三九已至科阎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忿族,已是汗流浹背锣笨。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留道批,地道東北人错英。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屹徘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衅金,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理噪伊,服務(wù)發(fā)現(xiàn),斷路器氮唯,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • 1. 認(rèn)識(shí)攔截器 Spring MVC的攔截器(Interceptor)不是Filter鉴吹,同樣可以實(shí)現(xiàn)請(qǐng)求的預(yù)處理...
    郭尋撫閱讀 19,750評(píng)論 1 16
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,867評(píng)論 6 342
  • application的配置屬性。 這些屬性是否生效取決于對(duì)應(yīng)的組件是否聲明為Spring應(yīng)用程序上下文里的Bea...
    新簽名閱讀 5,381評(píng)論 1 27
  • 曾經(jīng)認(rèn)為惩琉,肉體和精神是完全分開的豆励,只需要將自己的精神、意志鍛煉得足夠強(qiáng)大,那么肉體是難以干擾自己行為的良蒸。并且很長(zhǎng)的...
    鹿鹿小講堂閱讀 508評(píng)論 0 2