实例篇——springboot自定义拦截器
一、创建自己的拦截器,通过实现HandlerInterceptor接口,重写接口的三个方法,
preHandle(),预处理回调方法,实现处理器的预处理,如:登录检查,都是在请求controller层之前执行,
postHandle(),后处理回调方法,实现处理器的后处理,但是要在渲染视图之前
afterCompletion(),整个请求处理完毕回调方法,要在整个视图渲染完毕后回调
import com.impte.study.domain.po.User; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;@Component public class LoginInterceptor implements HandlerInterceptor {//这个方法是在访问接口之前执行的,我们只需要在这里写验证登陆状态的业务逻辑,就可以在用户调用指定接口之前验证登陆状态了public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//每一个项目对于登陆的实现逻辑都有所区别,我这里使用最简单的Session提取User来验证登陆。HttpSession session = request.getSession();//这里的User是登陆时放入session的User user = (User) session.getAttribute("user");//如果session中没有user,表示没登陆if (user == null){//这个方法返回false表示忽略当前请求,如果一个用户调用了需要登陆才能使用的接口,如果他没有登陆这里会直接忽略掉//当然你可以利用response给用户返回一些提示信息,告诉他没登陆return false;}else {return true; //如果session里有user,表示该用户已经登陆,放行,用户即可继续调用自己需要的接口 }}public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {} }
二、注册自己创建的拦截器,实现WebConfigurer接口
import com.impte.study.config.interceptors.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration public class WebConfigurer implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;// 这个方法是用来配置静态资源的,比如html,js,css,等等 @Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}// 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效 @Overridepublic void addInterceptors(InterceptorRegistry registry) {// addPathPatterns("/**") 表示拦截所有的请求,// excludePathPatterns("/login", "/register") 表示除了登陆与注册之外,因为登陆注册不需要登陆也可以访问registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login", "/register");} }
原文链接:
https://blog.csdn.net/qq_30745307/article/details/80974407
转载于:https://www.cnblogs.com/zzb-yp/p/11512126.html
实例篇——springboot自定义拦截器相关推荐
- 玩转springboot:实现springboot自定义拦截器
一.前言 在javaee中,我们经常使用filter来做拦截器,后来有了springmvc,我们使用HandlerInterceptor进行拦截,springmvc的拦截器查看这篇文章,现在有了spr ...
- springboot 自定义拦截器 防止恶意请求
该例子需要用到 redis 在applocation.properties中加入redis的配置信息 server.port=8081# Redis数据库索引(默认为0) spring.redis.d ...
- SpringBoot自定义拦截器
- springboot项目拦截器中获取接口返回数据_Spring Boot自定义Annotation实现接口自动幂...
在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同.按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重 ...
- java interceptor用法_java自定义拦截器用法实例
本文实例讲述了java自定义拦截器及其用法.分享给大家供大家参考.具体如下: LoginInterceptor.java文件如下: package com.tq365.util; import jav ...
- springboot+shiro自定义拦截器互踢问题
shiro自定义拦截器继承AccessControllerFilter,实现session互踢机制. 应用场景: 我们经常会有用到,当A 用户在北京登录 ,然后A用户在天津再登录 ,要踢出北京登录的状 ...
- Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】
什么是拦截器 拦截器Interceptor-..拦截器是Struts的概念,它与过滤器是类似的-可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为 ...
- SpringBoot中自定义拦截器
场景 自定义拦截器,通过继承WebMvcConfigureAdapter然后重写父类中的方法进行扩展. 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZH ...
- 【学习】SpringBoot之自定义拦截器
/*** 自定义拦截器**/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapter ...
- springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能
在spring-boot-2.2.5中对MVC自动配置类进行的更改,之前的WebMvcConfigurerAdapter类声明为过时的,现在进行自定义扩展需要实现WebMvcConfigurer类重写 ...
最新文章
- Centos学习笔记之grep命令
- 公钥密码-非对称加密算法
- 深蓝学院《从零开始手写VIO》作业六
- linux ubuntu下ffmpeg的安装
- MyEcplise中SpringBoot怎样定制启动banner?
- 数据库时间字段排序问题
- live555 源码分析: DESCRIBE 的处理
- 【渝粤题库】陕西师范大学151210 成本会计作业 (专升本)
- C++程序员必需的修养
- 小米随身wifi的linux驱动,小米随身wifi驱动
- keil5怎么放大字体_keil4调节字体 keil字体放大快捷键
- Fujitsu(富士通)扫描仪——fi-6130z 无感安装设置
- SecureCRT中文汉化版和永久免费激活。
- RAID Introduction
- 【问题记录】git报错:[remote rejected] (pre-receive hook declined)
- Unity中实现VR摄像机
- Basic Blocks
- java 立体几何体中心点,高中数学立体几何重心考点的解题技巧_招生指南
- 计算机保研个人简介,保研个人简历模板
- 三种方式让 Android WebView 支持文件下载