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

    Springboot 拦截器配置(登录拦截)

    注意这里环境为springboot为2.1版本


    1.编写拦截器实现类,实现接口   HandlerInterceptor,

    重写里面需要的三个比较常用的方法,实现自己的业务逻辑代码

    (就是自己拦截器拦截时做什么处理)

    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;
    
    /**
     * 
     * 
     * @Package: com.*.*.interceptor 
     * @ClassName: AdminInterceptor 
     * @Description:拦截器
     * @author: zk
     * @date: 2019年9月19日 下午2:20:57
     */
    public class AdminInterceptor implements  HandlerInterceptor {
    
        /**
         * 在请求处理之前进行调用(Controller方法调用之前)
         */
        @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时,请求将会继续执行后面的操作
        }
     
        /**
         * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    //         System.out.println("执行了TestInterceptor的postHandle方法");
        }
     
        /**
         * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
         */
        @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"
                                             );    
        }
    }

    这里不被拦截的路径,根据自己需求进行添加,上述主要是关于静态资源方面的


    到这里后端拦截已经完成

    我的项目是前后端分离的,前端使用的LayuiAdmin,借助了LayuiAdmin的前端拦截器进行相关html页面的拦截


    结束

  • 相关阅读:
    Linux bash sh .source exec 的区别比较。
    flink1.10 Linux 集群安装
    有关Spark中FlatMap算子源码理解
    Flink有关于水位线(WaterMark)相关问题
    Flink中并行度相关问题
    关于spark中的ResultStage和ShuffleMapStage
    关于windows10共享WiFi问题
    外网映射
    Druid的问题
    《小学四则运算练习软件软件需求说明》结对项目报告
  • 原文地址:https://www.cnblogs.com/zktww/p/11550891.html
Copyright © 2011-2022 走看看