springboot--页面访问拦截器

来源:互联网 发布:中国巡航导弹 知乎 编辑:程序博客网 时间:2024/05/21 22:30

页面访问拦截器
拦截器:拦截浏览器发送的请求。
很多页面我们都希望登录用户才可以访问,非登录用户则拒绝访问,这时就需要拦截器来处理请求。
自定义拦截器
新建MyHandlerInterceptor类实现HandlerInterceptor接口来定义自己的拦截器。

public class MyHandlerInterceptor implements HandlerInterceptor{    private static Logger log=LoggerFactory.getLogger(MyHandlerInterceptor.class);    /**     * 存储不拦截路径     */    private static final String[] IGNORE_URI = {"/index","/imagecode"};    //在请求处理之前进行调用(Controller方法调用之前)    @Override    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {        log.info("请求开始,判断是否需要拦截");        boolean flag=false;        String servletPath=req.getServletPath();        log.info("请求路径:"+servletPath);        //遍历数组确定该路径是否需要拦截        for(String str:IGNORE_URI){            if(servletPath.contains(str)){                flag=true;                log.info("该请求不需要拦截!");            }        }        //拦截请求        if(!flag){            //获取session中存储的用户信息            user user = (user) req.getSession().getAttribute("user");            if(user==null){                log.info("用户未登录,返回登录页面!");                // 服务器内部转发,可以带回request                req.getRequestDispatcher("/index").forward(req, resp);//拦截器的生命周期就已经结束,不会再向下执行            }else{                log.info("获取session中存储的用户信息:"+user.toString());                flag=true;            }        }        return flag;// 只有返回true才会继续向下执行,返回false取消当前请求    }    //请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)    @Override    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)            throws Exception {        log.info("请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");    }    //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)    @Override    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)            throws Exception {        log.info("在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");    }}

配置拦截器
新建配置类MyWebMvcCofig继承WebMvcConfigurerAdapter,然后重写addInterceptors方法

@Configurationpublic class MyWebMvcCofig extends WebMvcConfigurerAdapter {    @Override    public void addInterceptors(InterceptorRegistry registry) {        //拦截规则:除了index,其他都拦截判断        // addPathPatterns 用于添加拦截规则        // excludePathPatterns 用户排除拦截        registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index");    }}

栗子
不拦截请求实例
这里写图片描述
拦截请求实例
这里写图片描述
登录之后再次访问

这里写图片描述

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三相380转单相220怎么办 外国人一直找你出去怎么办 美团众包跑腿单物品太重怎么办 美团退款成功后 物品怎么办 win10电脑没有网络图标怎么办 电脑开机桌面什么都没有怎么办 xp桌面什么都没有了怎么办 手机下滑通知栏不见了怎么办 跑800米赶上月经怎么办 强迫症吃药没效怎么办 复读生档案丢了怎么办 大学退学重新高考学籍怎么办 玻尿酸鼻子宽了怎么办 被昆山市圆通快递公司骗怎么办 借壳上市后壳公司怎么办 盐城国有民办学校倒闭教师怎么办 联想复印机显示更换墨粉盒怎么办 襄垣县共公自行车卡怎么办 转南京江宁户口怎么办儿童医保 剑与家园鬼服怎么办 花生苗出现虫洞怎么办 被蝎子草扎到手怎么办 被蝎子草蛰了怎么办 螫麻子草扎了怎么办 苹果app没删除干净怎么办 字写的太潦草看不懂怎么办 肝内胆管结石疼怎么办 肝内胆管有结石怎么办 肝里胆管有结石怎么办 被信任的人算计你怎么办 卡罗拉1.8油耗高怎么办 请问09年途锐柴油版怎么办 油电混合没电了怎么办 前向运动精子3%怎么办 精子活力正常精子活率低怎么办? 精子形态正常率低怎么办 前向运动精子20%怎么办 不运动精子率高怎么办 前向运动精子少怎么办 精子前向运动力低怎么办 精子异常形态率高怎么办