SpringBoot實現登陸攔截


一、創建interceptor包,在interceptor中創建一個攔截器並實現HandlerInterceptor

代碼:

@Component
public class LoginHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

       //攔截邏輯
        Object user = request.getSession().getAttribute("loginUser");
        if (user == null) {
            System.out.println("沒有權限請先登陸");
            //未登陸,返回登陸界面
            request.setAttribute("msg","沒有權限請先登陸");
            request.getRequestDispatcher("/login").forward(request,response);
            return false;
        } else {
            //已登陸,放行請求
            return true;
        }
    }
}

注意一下:在低版本的SpringBoot中需要實現postHandle方法和afterCompletion方法,高版本的SpringBoot需要用到這兩個方法直接重寫就行了,在這就不做過多的介紹了。

 

二、創建一個SpringMvc配置類並實現WebMvcConfigurer類

代碼:

@Configuration
public class MyWebMvcConfiguration implements WebMvcConfigurer {

    @Autowired
    LoginHandlerInterceptor loginHandlerInterceptor;

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/login");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }

    //注冊攔截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //攔截所有的請求
        registry.addInterceptor(loginHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/login", "/register").excludePathPatterns("/static/**");
    }

}

注意:在SpringBoot中,只能通過創建SpringMVC配置文件來注冊攔截器,

.addPathPatterns("/**")表示攔截所有的請求,
excludePathPatterns表示路徑不需要攔截哪些路徑
一定要在這里排除攔截static路徑下的靜態文件,或者在SpringBoot配置文件上配置,否則頁面加載不到樣式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM