• 分享知识-快乐自己:SpringBoot结合使用拦截器(判断是否用户是否已登陆)


    所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样。

    基础拦截器操作:

    拦截器是一种AOP操作实现,那么在AOP之中用户一定不需要去关注拦截器的存在,用户只需要按照自己已经习惯的处理方式进行代码的编写即可。

    首先我们先创建一个自定义的拦截器:

    public class SysInterceptor extends HandlerInterceptorAdapter {
        /**
         * 进入拦截器后首先进入的方法
         * 返回false则不再继续执行
         * 返回true则继续执行
         */
        public boolean preHandle(HttpServletRequest request,
                                 HttpServletResponse response, Object handler)throws Exception
        {
            System.out.println("我是拦截器:我证明我进来了");
            HttpSession session=request.getSession();
            User userInfo = (User)session.getAttribute("userInfo");
            if(userInfo==null)
            {
                System.out.println("我证明用户没有登录");
                response.sendRedirect(request.getContextPath()+"/login.html");
               return false;
            }
            System.out.println("我证明用户已经登录");
            return  true;
        }
        /**
         * 生成视图时执行,可以用来处理异常,并记录在日志中
         */
        public void afterCompletion(HttpServletRequest request,
                                    HttpServletResponse response,
                                    Object arg2, Exception exception){
                    //-----------------//
        }
    
        /** -
         * 生成视图之前执行,可以修改ModelAndView
         */
        public void postHandle(HttpServletRequest request,
                               HttpServletResponse response,
                               Object arg2, ModelAndView arg3)
                throws Exception{
                //----------------------------//
        }
    }

     接下来我们需要将 SysInterceptor 拦截器添加到SpringBoot的配置中,让SpringBoot项目有这么一个拦截器存在,我们新创建一个SessionConfiguration,将拦截器的配置以及拦截路径配置好,如下图所示:

    下面我们来说明一下: "/fileter/**" 的意思:就是说我要拦截所有以 /fileter 开头的访问路径,因为我Controller层 是这样编写的(可根据自己需求更改)

    1):这是小编访问登陆页面的路径:没有以 /fileter开头

    2):这是小编访问主页面的路径:以 /fileter 开头

     

    并且将查到的用户信息 存储到了 Session中。

    到这里就已经结束。编写以上的内容,就可以时间基础的 拦截器。

    (加载时机:当我们直接访问 /fileter/logins 的时候,会先走我们自定义的拦截器。此时从Session中获取用户对象信息。若是有信息则是已经登陆了,直接返回 true 通过。否则就 重新跳转到登陆页面,返回 False)

     

    若有不足之处:请多多指教...

    如要转载:请注明小编本站地址:(https://www.cnblogs.com/mlq2017/)

  • 相关阅读:
    JS-15 (class)
    JS-14 (解构)
    AI CycleGAN
    AI GAN
    AI StarGAN
    AI VGG
    硬件 PCIe总线
    工具 docker
    MySql开启慢速查询日志
    AI StyleGAN
  • 原文地址:https://www.cnblogs.com/mlq2017/p/9635529.html
Copyright © 2020-2023  润新知