【JAVA】Spring Boot项目开发中拦截器的使用_jeecgboot的java拦截请求在哪里-程序员宅基地

技术标签: spring  spring boot  java  

一、前言

在项目开发中通常会对用户访问的页面进行权限检查。比如在登入一个页面时,如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。

二、拦截器和过滤器的区别

① 拦截器是基于java的反射机制的,而过滤器是基于函数回调。

② 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

③ 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起 作用。

④ 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

⑤ 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

三、拦截器的使用

首先自定义一个拦截器让它实现HandlerInterceptor接口,并重写preHandle方法。然后自定义其逻辑,这里以是否为登录状态作为演示。

public class LoginInterceptor implements HandlerInterceptor {
    

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
    
        
        if(request.getSession().getAttribute("user") == null) {
    
            response.sendRedirect("/admin");
            return false;
        }
        return true;
        
    }
}

这里跳转页面一般使用重定向,返回值为false会终止请求。

然后去声明你要拦截的路径,这里需要定义一个@Configuration注释的配置类,在配置类里去写你要拦截的路径。

@Configuration
public class WebConfig implements WebMvcConfigurer {
    

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/admin/**")
                .excludePathPatterns("/admin/login")
                .excludePathPatterns("/admin");
    }
}

addPathPatterns为拦截路径
excludePathPatterns为忽略的拦截路径(此路径不进行拦截)
addPathPatternsexcludePathPatterns里的参数也可以是一个String类型的数组,在数组里去写路径。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yumenghao212/article/details/122402816

智能推荐

《剑指offer》第7题:斐波那契数列_for 1071:菲波那契数 【题目描述1071:菲波那契数 【题目描述】 菲波那契数列是指-程序员宅基地

文章浏览阅读291次。斐波那契数列1 题目描述2 分析及题解2.1 方法一:递归2.2 方法二:递归2.3 方法三:循环迭代1 题目描述  大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=392 分析及题解2.1 方法一:递归之前写过一题是需要返回整个斐波那契数列的,所以此次递归借助一个初始化列表class Solution1: def __init__(self): self.fibList = [0, 1] #_for 1071:菲波那契数 【题目描述1071:菲波那契数 【题目描述】 菲波那契数列是指

Tex Live & TeXstudio安装及配置_texstudio下载-程序员宅基地

文章浏览阅读2.8w次,点赞8次,收藏42次。目录1 TeXlive下载2 TeXstudio下载3 TeXstudio配置3.1 命令设置3.2 测试生成pdf设置中文可以这样说,TeXlive是TeX的一个发行版,适用于Windows和Linux系统,给TeX的使用提供了工作环境,大概可以理解为Java的JDK?TeXstudio则优于TeXlive自带的TeXwork editor编辑器,大概可以理解为Java的各种编译器?1 TeXlive下载https://www.tug.org/texlive/也可以在镜像网站下载,更加快,挑一个_texstudio下载

前端开发:JS的解构_前端解构-程序员宅基地

文章浏览阅读2k次,点赞7次,收藏8次。在前端开发过程中,关于数据处理是一个非常重要的操作,尤其是遇到一些复杂的业务场景情况,涉及到数据的处理也是非常麻烦的事情。从后台拿到的数据源,处理成前端需要的格式或者形式,这就需要前端开发者做中转的一系列逻辑处理,甚至涉及到算法处理,所以不要单纯的觉得数据处理就是从后台拿数据然后展示渲染处理即可,其实远不止这些,尤其是在ES6之后,新增了一种从数组或者对象中获取指定元素的方式,也就是本篇博文所要介绍的内容:解构。..._前端解构

倒置函数reverse的用法_reverse ( char *s )在c语言中代表什么-程序员宅基地

文章浏览阅读3k次。倒置字符串函数reverse:用于倒置字符串s中的各个字符的位置,如原来字符串中如果初始值为123456,则通过reverse函数可将其倒置为654321,程序如下:#include#includevoid reverse(char s[]){ int c,j,i; for(i=0,j=strlen(s)-1;i

配置vue-router报错_error in setup: "error: [vue-router]: missing curr-程序员宅基地

文章浏览阅读95次。配置vue-router报错_error in setup: "error: [vue-router]: missing current instance. userouter()

Airtest 环境搭建之JDK1.8下载安装&配置&完全卸载_airtestide 怎么卸载-程序员宅基地

文章浏览阅读1k次。前提条件:Airtest IDE:编写测试脚本,可进行录制修改调试运行脚本;Aietest下载 python:拓展高级功能,需要配置python环境;python 下载 parcharm:parcharm下载 Android SDK :提供了Android API 库和开发工具用于构建 测试 调试安卓应用程序;安卓SDK JDK:AirtestIDE本身一部分是用JAVA开发的,所以需要JDK;JDK8下载为什么单独写JDK的配置呢?因为我第一次安装的时候改了默认位置,按照网上的教程配置..._airtestide 怎么卸载

随便推点

Android findViewById与findViewWithTag()-程序员宅基地

文章浏览阅读1.1k次。2019独角兽企业重金招聘Python工程师标准>>> ..._findviewwithtag

QT关于回调函数_qt 回调函数-程序员宅基地

文章浏览阅读5.5k次。.h文件#ifndef CALLBACK_H#define CALLBACK_Htypedef void (* Callback )( void *n_obj, void *user_data );//callbackstruct Timer{ void *user_data; void *user_obj; Callback n_cb;};cla_qt 回调函数

splice和slice的差别_splice改变原数组-程序员宅基地

文章浏览阅读502次。前端js基础:splice和slice的差别_splice改变原数组

实验6:6-5_write(str(i))-程序员宅基地

文章浏览阅读71次。f=open('sy6-5.txt','w')n=0for i in range(20): for j in range(0,2): n+=1 if n%5==0: f.write(str(i)+'\n') else: f.write(str(i)+' ')f.close()_write(str(i))

安装Anaconda_anaconda安装pytorch环境 environment location: c:\users-程序员宅基地

文章浏览阅读1.2k次。遗留问题:环境目录 Anaconda安装路径默认了,装在了C盘,环境目录也默认在了C:\Users\dell\.conda\envs配置库的时候,该环境占用空间接近1G,会对后续计算有什么影响?一、Anaconda安装时出现的问题和目前解决方式Anaconda自带Python 3.7.61.1 CMD中Warning,环境未激活暂时解决:CMD中输入 conda info --envs,enter,activate base就正常了但是,不影响Jupyter和Sp..._anaconda安装pytorch环境 environment location: c:\users\dell\.conda\envs\

HTML富文本编辑器wangEditor的使用_wangeditor html本地引用-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏10次。HTML富文本编辑器wangEditor的使用官网http://www.wangeditor.com/用法官方文档已经讲得很清楚了,我这里只贴出代码,方便以后自己粘贴复制用用到的CSSwangEditor-fullscreen-plugin.css@CHARSET "UTF-8";.w-e-toolbar { flex-wrap: wrap; -webkit-box-lin..._wangeditor html本地引用

推荐文章

热门文章

相关标签