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

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

 更新時間:2022年03月25日 08:37:08   作者:C'z x  
本文主要介紹了SpringBoot攔截器實現(xiàn)登錄攔截,文中根據實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下

可以對URL路徑進行攔截,可以用于權限驗證、解決亂碼、操作日志記錄、性能監(jiān)控、異常處理等

 實現(xiàn)代碼

新建 interceptor包

添加攔截器代碼

package com.qcby.interceptor;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class LoginInterceptor  implements HandlerInterceptor {
 
    @Autowired
    private HttpSession httpSession;
    //Controller邏輯執(zhí)行之前
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle....");
        String uri = request.getRequestURI();
        System.out.println("當前路徑"+uri);
 
        /**
         * HandlerMethod=>Controller中標注@RequestMapping的方法
         *  需要配置靜態(tài)資源不攔截時,添加這塊邏輯  => 前后端分離項目
         */
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        if (httpSession.getAttribute("username") == null) {
            // 未登錄跳轉到登錄界面
            throw  new RuntimeException("no login!");
        } else {
            return true;
        }
    }
 
    //Controller邏輯執(zhí)行完畢但是視圖解析器還未進行解析之前
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle....");
    }
 
    //Controller邏輯和視圖解析器執(zhí)行完畢
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("afterCompletion....");
    }
}

注冊,配置攔截路徑和排除登錄需訪問路徑

package com.qcby.config;
 
import com.qcby.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor())
                .addPathPatterns("/**")
                // 那些路徑不攔截
                .excludePathPatterns("/user/login","/error");
    }
 
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }
}

實現(xiàn)類

@RestController
@RequestMapping("user")
public class UserController {
@Autowired
    private UserService userService;
    @Autowired
    private HttpSession session;
    @ApiOperation("用戶登錄接口")
    @RequestMapping(value="login",method = {RequestMethod.GET,RequestMethod.POST})
    public Map<String,Object>login(User user){
        Map<String,Object> map=new HashMap<>();
        map.put("code",0);
        if(StringUtils.isEmpty(user.getUsername())||StringUtils.isEmpty(user.getPassword())){
            map.put("msg","用戶或密碼為空!");
            return map;
        }
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("username",user.getUsername())
                .eq("password",user.getPassword());
        User user1=userService.getOne(queryWrapper);
        if(user1!=null){
            map.put("cod",1);
            map.put("data",user1);
            session.setAttribute("username",user1.getUsername());
        }else {
            map.put("msg","用戶名或密碼錯誤!");
        }
        return map;
    }
}

當我們未登錄時我們不能進入攔截的頁面 

 登錄

登錄之后我們就能進入hello方法了 

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

相關文章

  • spring?IOC控制反轉原理詳解

    spring?IOC控制反轉原理詳解

    這篇文章主要為大家詳細介紹了spring?IOC控制反轉原理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java 反射機制詳解及實例

    Java 反射機制詳解及實例

    這篇文章主要介紹了Java 反射機制詳解及實例的相關資料,需要的朋友可以參考下
    2017-03-03
  • 深入剖析java中的集合框架

    深入剖析java中的集合框架

    下面小編就為大家?guī)硪黄钊肫饰鰆ava中的集合框架。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • guava中Multimap、HashMultimap用法小結

    guava中Multimap、HashMultimap用法小結

    這篇文章主要介紹了guava中Multimap、HashMultimap使用,Multimap它可以很簡單的實現(xiàn)一些功能,LinkedHashMultimap實現(xiàn)類與HashMultimap類的實現(xiàn)方法一樣,唯一的區(qū)別是LinkedHashMultimap保存了記錄的插入順序,本文就這些內容講解的非常詳細,需要的朋友參考下吧
    2022-05-05
  • Java 二維碼,QR碼,J4L-QRCode 的資料整理

    Java 二維碼,QR碼,J4L-QRCode 的資料整理

    本文主要介紹Java 中二維碼,QR碼,J4L-QRCode,這里整理了詳細的資料供大家學習參考關于二維碼的知識,有需要的小伙伴可以參考下
    2016-08-08
  • Java Lock鎖多線程中實現(xiàn)流水線任務

    Java Lock鎖多線程中實現(xiàn)流水線任務

    這篇文章主要介紹了Java Lock鎖多線程中實現(xiàn)流水線任務,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Java并發(fā)編程之對象的共享

    Java并發(fā)編程之對象的共享

    這篇文章主要介紹了Java并發(fā)編程之對象的共享,介紹如何共享和發(fā)布對象,使它們被安全地由多個進程訪問。需要的小伙伴可以參考一下
    2022-04-04
  • 詳解java 對象鎖與類鎖

    詳解java 對象鎖與類鎖

    這篇文章主要介紹了java 對象鎖與類鎖的相關資料,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • 基于java實現(xiàn)的ECC加密算法示例

    基于java實現(xiàn)的ECC加密算法示例

    這篇文章主要介紹了基于java實現(xiàn)的ECC加密算法,簡單說明了ECC算法的概念、原理,并結合實例形式分析了java實現(xiàn)ECC加密算法的定義與使用技巧,需要的朋友可以參考下
    2017-08-08
  • 詳解Spring Aop實例之xml配置

    詳解Spring Aop實例之xml配置

    本篇文章主要介紹了詳解Spring Aop實例之xml配置,使用xml可以對aop進行集中配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論

黄浦区| 阜新市| 湖南省| 莱阳市| 江川县| 南投县| 达拉特旗| 海阳市| 龙泉市| 高青县| 平果县| 石阡县| 博罗县| 万载县| 宣城市| 黄山市| 绥芬河市| 杭锦后旗| 吴桥县| 宜兰县| 绥德县| 长沙县| 恭城| 扬州市| 河北省| 保山市| 安达市| 娱乐| 遵义市| 中牟县| 门头沟区| 泾阳县| 即墨市| 宜兰市| 延寿县| 陵川县| 兰溪市| 赤壁市| 秦安县| 浙江省| 巩义市|