最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼

 更新時(shí)間:2023年09月08日 09:17:26   作者:龍貓藍(lán)圖  
如果我們不進(jìn)行登錄攔截的話,即使我們跳過登錄頁面直接去訪問任意一個(gè)頁面也能訪問成功,那么登錄功能就沒有意義,同時(shí)也會(huì)存在安全問題,本文就來介紹一下SpringBoot登錄攔截,具有一定的參考價(jià)值,感興趣的可以了解一下

如果我們不進(jìn)行登錄攔截的話,即使我們跳過登錄頁面直接去訪問任意一個(gè)頁面也能訪問成功,那么登錄功能就沒有意義,同時(shí)也會(huì)存在安全問題,因?yàn)橛行┎僮魇且脩舻卿浐蟛拍軋?zhí)行的,如果用戶沒有登錄,該接口就獲取不了當(dāng)前訪問的用戶也就不知道是哪個(gè)用戶執(zhí)行了該操作就會(huì)出錯(cuò)。所以我們要進(jìn)行登錄判斷,如果沒有登錄則訪問任意頁面都跳轉(zhuǎn)到登錄頁面。

代碼實(shí)現(xiàn)

  • 創(chuàng)建自定義過濾器LoginCheckFilter
  • 在啟動(dòng)類上加入注解@ServletComponentScan,才會(huì)去掃描過濾器
  • 完善過濾器的處理邏輯

具體實(shí)現(xiàn)

使用過濾器或者攔截器,在過濾器或者攔截器中判斷用戶是否已經(jīng)完成登錄,如果沒有登錄則跳轉(zhuǎn)到登錄頁面。如果登錄了或者該請(qǐng)求不需要登錄攔截器直接放行,交由具體的controller進(jìn)行處理。

LoginCheckFilter

package com.zxy.filter;
//urlPatterns配置攔截路徑,這里表示攔截所有
@WebFilter(filterName="loginCheckFilter",urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {
    //路徑匹配器,支持通配符
    public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        //1.獲取本次請(qǐng)求的URI
        String requestURI = request.getRequestURI();
        //定義不需要處理的請(qǐng)求路徑,下面的*只是字符串,并不是通配符,后面通過check判斷時(shí)*號(hào)就視為通配符了
        String[] urls = new String[]{
                "/employee/login",
                "/employee/logout",
                "/backend/**",
                "/front/**"
        };
        //2.判斷本次請(qǐng)求是否需要處理
        boolean check = check(urls,requestURI);
        //3.如果不需要處理,直接放行
        if(check){
            filterChain.doFilter(request,response);
            return;
        }
        //4.如果需要處理,判斷是否登錄
        //登錄狀態(tài),不需要處理,直接放行
        if(request.getSession().getAttribute("employee")!=null){
            filterChain.doFilter(request,response);
            return;
        }
        //5.如果未登錄則返回未登錄結(jié)果,通過輸出流方式向客戶端頁面響應(yīng)數(shù)據(jù),因?yàn)槲覀兎祷氐氖莢oid,所以不能return R.error("NOTLOGIN")
        response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
        return;
    }
    public boolean check(String[] urls,String requestURI){
        for(String url:urls){
            boolean match = PATH_MATCHER.match(url,requestURI);
            if(match){
                return true;
            }
        }
        return false;
    }
}

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot 登錄攔截內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RocketMQ根據(jù)Tag進(jìn)行消息過濾

    RocketMQ根據(jù)Tag進(jìn)行消息過濾

    消費(fèi)者訂閱了某個(gè)主題后,Apache RocketMQ 會(huì)將該主題中的所有消息投遞給消費(fèi)者。若消費(fèi)者只需要關(guān)注部分消息,可通過設(shè)置過濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無效的消息
    2023-02-02
  • mybatis中返回主鍵一直為1的問題

    mybatis中返回主鍵一直為1的問題

    這篇文章主要介紹了mybatis中返回主鍵一直為1的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解Java中的延時(shí)隊(duì)列 DelayQueue

    詳解Java中的延時(shí)隊(duì)列 DelayQueue

    這篇文章主要介紹了Java中延時(shí)隊(duì)列 DelayQueue的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • springmvc的@Validated注解使用

    springmvc的@Validated注解使用

    這篇文章主要介紹了springmvc的@Validated注解使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java面向?qū)ο笾蓡T隱藏與屬性封裝操作示例

    Java面向?qū)ο笾蓡T隱藏與屬性封裝操作示例

    這篇文章主要介紹了Java面向?qū)ο笾蓡T隱藏與屬性封裝操作,結(jié)合實(shí)例形式分析了Java面向?qū)ο蟪绦蛟O(shè)計(jì)中成員的隱藏及屬性封裝相關(guān)實(shí)現(xiàn)與使用操作技巧,需要的朋友可以參考下
    2018-06-06
  • SpringBoot實(shí)現(xiàn)全局異常的封裝和統(tǒng)一處理

    SpringBoot實(shí)現(xiàn)全局異常的封裝和統(tǒng)一處理

    在Spring Boot應(yīng)用中,全局異常的處理是一個(gè)非常重要的方面,本文主要為大家詳細(xì)介紹了如何在Spring Boot中進(jìn)行全局異常的封裝和統(tǒng)一處理,需要的可以參考下
    2023-12-12
  • 使用Java SDK實(shí)現(xiàn)離線簽名

    使用Java SDK實(shí)現(xiàn)離線簽名

    這篇文章主要介紹了使用Java SDK實(shí)現(xiàn)離線簽名,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • java中的定時(shí)器和多線程

    java中的定時(shí)器和多線程

    這篇文章主要介紹了java中的定時(shí)器和多線程用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot個(gè)性化啟動(dòng)Banner設(shè)置方法解析

    SpringBoot個(gè)性化啟動(dòng)Banner設(shè)置方法解析

    這篇文章主要介紹了SpringBoot個(gè)性化啟動(dòng)Banner設(shè)置方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 一篇文章讓你弄懂Java運(yùn)算符

    一篇文章讓你弄懂Java運(yùn)算符

    java中位運(yùn)算符主要有按位與&、按位或|、按位非~、按位異或^, 在使用時(shí)需要將運(yùn)算數(shù)都轉(zhuǎn)換為二進(jìn)制再進(jìn)行運(yùn)算,若為負(fù)數(shù)則使用補(bǔ)碼表示,這篇文章主要給大家介紹了關(guān)于Java運(yùn)算符的相關(guān)資料,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

壤塘县| 宁陵县| 迁安市| 隆子县| 阿荣旗| 河津市| 赤城县| 新安县| 清丰县| 元谋县| 潞城市| 兰西县| 杂多县| 和平县| 石首市| 利辛县| 丘北县| 万盛区| 龙口市| 东阳市| 曲阳县| 五华县| 木兰县| 五指山市| 石屏县| 永康市| 天峨县| 汾阳市| 大丰市| 德兴市| 南江县| 陕西省| 北安市| 莆田市| 民权县| 浙江省| 兰西县| 班玛县| 礼泉县| 仁寿县| 浪卡子县|