springboot的登录拦截器的学习
在项目下新建config文件夹
新建LoginHandlerInterceptor类
具体内容
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
public class LoginHandlerInterceptor implements HandlerInterceptor {//目标方法执行之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {Object user = request.getSession().getAttribute("userid");//判定并且写自己的业务代码if (StringUtils.isEmpty(user)) {//未登陆,返回首页request.setAttribute("msg", "没有权限请先登陆");response.sendRedirect(request.getContextPath() + "/");//重定向
// request.getRequestDispatcher("/").forward(request,response);//转发return false;} else {//已登陆,放行请求return true;}}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}
- preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
- postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会修改ModelAndView
- afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面)
除了使用@compant直接当作bean直接注入springboot中还可以继承WebMvcConfigurer来进行注册
- 新建 LoginInterceptor 实现 HandlerInterceptor接口
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {Object obj = request.getSession().getAttribute("loginUser");//(你的用户信息session)// 如果user不为空则放行if (null != obj) {return true;}// 否则拦截并跳转到登录response.sendRedirect("/admin/login");return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {}
新建WebAppConfigurer 实现WebMvcConfigurer接口
public class WebAppConfigurer implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginAuthenticator;/*** 注册拦截器*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginAuthenticator).addPathPatterns("/admin/**").excludePathPatterns("/admin/login").excludePathPatterns("/admin/getLogin");// - /**: 匹配所有路径// - /admin/**:匹配 /admin/ 下的所有路径// - /admin/*:只匹配 /admin/login,不匹配 /secure/login/tologin ("/*"只匹配一级子目录,"/**"匹配所有子目录)
}.......//其实下面还有很多方法我这里就省略了,过滤器可以添加多个。
}
springboot的登录拦截器的学习相关推荐
- springboot整合shiro和session的详细过程和自定义登录拦截器
文章目录 1.shiro依赖 2.shiro配置 shiro过滤器配置: 关联自定义的其他管理器 自定义会话工厂: 3.登陆时记录用户信息 4.shiro一些工具类的学习 5.自定义登录拦截器 shi ...
- 七、SpringBoot——用户登录Demo(国际化、表单重复提交,登录拦截器)
一.CURD的Demo 1开发前准备工作 新建一个SpringBoot工程 引入starter-web maven依赖 引入html页面和assert文件夹里的样式文件等等 2 实现访问登录页面 方式 ...
- java 登录拦截器_springMVC 拦截器-用户登录拦截实战
各位小伙伴 咱们继续学习新知识 今天要分享的就是 拦截器 不知道小伙伴们平时上网的时候有没有注意到,尤其是上网购物的时候,不登录账号,就无法访问一些功能页面,比如你不登录账号,就没法查看购物车里面有什 ...
- Vue + Spring Boot 项目实战(七):前端路由与登录拦截器
文章目录 前言 一.前端路由 二.使用 History 模式 三.后端登录拦截器 3.1. LoginController 3.2. LoginInterceptor 3.3. WebConfigur ...
- Spring Boot 实现登录拦截器,这才是正确的姿势!!
原文:https://blog.csdn.net/qq_27198345/article/details/111401610 对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在Spr ...
- vue拦截器刷新登陆页面_Vue + Spring Boot 项目实战(六):前端路由与登录拦截器-Go语言中文社区...
前言 这一篇主要讲前端路由与登录拦截器的实现.放在一起讲是因为我在开发登录拦截器时因为这个路由的问题遇到了很多坑,花费了很长时间,网上的解决方案都不怎么靠谱,综合了好几种办法才最终成功,其实关于这个部 ...
- springboot 自定义注解拦截器
springboot 自定义注解拦截器 最近在工作中,发现自定义注解拦截使用起来特别方便,现在来写出来给大家看看 环境springboot 首先写一个自定义注解 package com.study.c ...
- Springboot实现登录拦截的三种方式
文章目录 1. 登录认证 1.1 介绍 1.2 方式 1.3 扩展 2. 实现 2.1 项目结构以及前置准备 2.2 过滤器实现登录拦截 2.3 拦截器实现登录拦截 2.4 AOP+自定义注解实现 2 ...
- Vue + Spring Boot 项目实战(六):前端路由与登录拦截器
本篇目录 前言 一.前端路由 二.使用 History 模式 三.后端登录拦截器 1.LoginController 2.LoginInterceptor 3.WebConfigurer 4.效果检验 ...
最新文章
- UI设计培训中的扁平化理念
- 激战服务器位置,《激战2》世界之战指南(选择服务器)
- Towards a topological-geometrical theory of group equivariant non-expansive operators for data analy
- Vim skills
- /boot/grub/grub.conf文件详解
- 腾讯技术直播间 | Apache IoTDB x Apache Pulsar Meetup
- php识别中文编码并自动转换为UTF-8
- RabbitMQ pull与push的区别
- 数据科学家:我的工作就是发现别人未知的
- RabbitMQ学习之Flow Control
- DevExpress之TreeList用法
- sonar 配置sonarqube分析unity中的C# 代码
- Prometheus客户端docker监控cAdvisor
- 基于51单片机的简易数字示波器proteus仿真
- 【wpa_supplicant】从 assoc 动作窥伺supplicant与driver的交互(二)
- 计算机英特尔显卡在哪找,英特尔®显卡和 Windows 7 * 常见问题解答
- java中高级面试_中高级面试常问:Java面向对象设计的六大原则
- 最近邻分类器(Nearest Neighbor Classifier)
- Google Map 初步使用
- 2020 新的一年加油!
热门文章
- ftp服务器怎么添加文件夹,批量建立文件夹,为Serv_U批量创建用户
- 前端ffmpeg实现视频剪切
- 2017到2021全球通信提供商CAPEX超2.1万亿美元
- 3D标签云的简单实现
- spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型
- linux下swf播放工具
- 【Relax人生法则之躺平方法论】如何优雅地躺平?那些看似无足轻重,实则细思极恐的毒鸡汤。
- Mifare l射频卡初始值及其相关说明
- 悖论在计算机中的应用,“索洛悖论”悖论 计算机影响随处可见
- 自损八百!美光停止供货华为