zoukankan      html  css  js  c++  java
  • SpringBoot 拦截器配置(登录拦截)

    1.拦截器实现类

    重写里面需要的三个比较常用的方法,实现自己的业务逻辑代码 (就是自己拦截器拦截时做什么处理)

    package com.*.*.interceptor;
    import java.io.IOException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.*.*.*.User;
    
    /**
     * 
     * @Description:拦截器
     * @date: 2019年9月19日 下午2:20:57
     */
    public class AdminInterceptor implements HandlerInterceptor {
    
        /**
         * 在请求处理之前进行调用
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
    //        System.out.println("执行了TestInterceptor的preHandle方法");
            try {
                //统一拦截(查询当前session是否存在user)(这里user会在每次登陆成功后,写入session)
                User user=(User)request.getSession().getAttribute("USER");
                if(user!=null){
                    return true;
                }
                response.sendRedirect(request.getContextPath()+"你的登陆页地址");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return false;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作
                          //如果设置为true时,请求将会继续执行后面的操作
        }
     
        /**
         * 请求处理之后进行调用
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    //         System.out.println("执行了TestInterceptor的postHandle方法");
        }
     
        /**
         * 在整个请求结束之后被调用
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    //        System.out.println("执行了TestInterceptor的afterCompletion方法");
        }
       
    }
    
    

    2. 拦截器配置

    需要定义拦截器配置类并继承 WebMvcConfigurer 类,并重写其中的方法 addInterceptors 并且在主类上加上注解 @Configuration

    package com.*.*.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    import com.*.*.interceptor.AdminInterceptor;
    
    /**
     * 
     * 
     * @Package: com.*.*.config 
     * @ClassName: LoginConfig 
     * @Description:拦截器配置
     * @author: zk
     * @date: 2019年9月19日 下午2:18:35
     */
    @Configuration
    public class LoginConfig implements WebMvcConfigurer {
        
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //注册TestInterceptor拦截器
            InterceptorRegistration registration = registry.addInterceptor(new AdminInterceptor());
            registration.addPathPatterns("/**");                      //所有路径都被拦截
            registration.excludePathPatterns(                         //添加不拦截路径
                                             "你的登陆路径",            //登录
                                             "/**/*.html",            //html静态资源
                                             "/**/*.js",              //js静态资源
                                             "/**/*.css",             //css静态资源
                                             "/**/*.woff",
                                             "/**/*.ttf"
                                             );    
        }
    }
    

    这里不被拦截的路径,需要根据自己实际项目需求进行设置。

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Android 压力测试工具Monkey
    解决maven的依赖总是无法下载完成
    JDBC连接数据库(二)
    JDBC连接数据库(一)
    webdriver js点击无法点击的元素
    多线程Java面试题总结
    PHP unset销毁变量并释放内存
    ThinkPHP函数详解:D方法
    PHP 函数:intval()
    ThinkPHP 模板显示display和assign的用法
  • 原文地址:https://www.cnblogs.com/binbingg/p/13892692.html
Copyright © 2011-2022 走看看