Springboot未登录请求拦截器实现
Springboot未登录请求拦截器实现
之前用过struts2的同学了解,未登录请求拦截可以通过自定义Interceptor实现,
在springboot项目中也有对应的解决方案:
- 自定义Interceptor extends HandlerInterceptorAdapter,重写preHandle方法
- 自定义WebMvcConfig实现WebMvcConfigurer接口, 实现addInterceptors方法,添加自定义的拦截器即可**
下面我们来看下具体实现
LoginHandlerInterceptor实现代码
本文承接个人上篇博客中的统一异常处理的方式来处理未登录返回信息的 https://blog.csdn.net/u014229347/article/details/93183143
/*** <p>@filename LoginInterceptor</p>* <p>* <p>@description 登录拦截器</p>** @author llspace* @version 1.0* @since 2019/6/21 10:34**/
@Component
public class LoginHandlerInterceptor extends HandlerInterceptorAdapter {@Autowiredprivate UserService userService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if(handler instanceof HandlerMethod){String method = ((HandlerMethod) handler).getMethod().getName();if("doLogin".equals(method)){return true;}//登录判断User user = getUser(request, response);if(user == null){//未登录render(response, CodeMsg.NOT_LOGIN);return false;}//将用户信息设置到UserContext,便于后续使用UserContext.setUser(user);}return true;}private User getUser(HttpServletRequest request, HttpServletResponse response) {//根据系统不同,系统用来管理session的方式也不相同,所以此处获取user信息的方法就不具体展开实现了//本人是采用token+redis存储的方式来实现管理的,所以此处是通过token去redis中getUser即可}private void render(HttpServletResponse response, CodeMsg codeMsg)throws Exception {response.setContentType("application/json;charset=UTF-8");OutputStream out = response.getOutputStream();String str = JSON.toJSONString(Result.error(codeMsg));out.write(str.getBytes("UTF-8"));out.flush();out.close();}
}
WebMvcConfig 实现代码
/*** <p>@filename WebMvcConfig</p>* <p>* <p>@description Spring MVC配置类</p>** @author llspace* @version 1.0* @since 2019/6/19 17:11**/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Autowiredprivate LoginHandlerInterceptor loginHandlerInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginHandlerInterceptor);}}
以上实现均为个人思路,仅供参考, 欢迎一起学习交流
Springboot未登录请求拦截器实现相关推荐
- shiro 同时实现url和按钮的拦截_Shiro是如何拦截未登录请求的(一)
问题描述 之前在公司搭项目平台的时候权限框架采用的是shiro,由于系统主要面向的是APP端的用户,PC端仅仅是公司内部人员在使用,而且考虑到系统的可用性和扩展性,服务端首先基于shiro做了一些改造 ...
- 在SpringBoot项目中整合拦截器
拦截器在Web系统中非常常见,对于某些全局统一的操作,我们可以把它提取到拦截器中实现.总结起来,拦截器大致有以下几种使用场景: 1.权限检查:如登录检测,进入处理程序检测用户是否登录,如果没有,则直接 ...
- vue项目中 axios请求拦截器与取消pending请求功能 - 年少、 - 博客园
在开发vue项目中,请求是不可缺少的,在发送请求时常常需要统一处理一些请求头参数等设置与响应事件,这时利用请求拦截器再好不过. 这里以axios请求为例 实现了设置统一请求头添加token, 其中to ...
- axios请求拦截器、响应拦截器、vue-router路由导航守卫的使用(案例)
axios官方文档 一.请求拦截器 设置headers,给所有请求加上Authorization:token值 二.响应拦截器 直接去访问/article,发现可以进入到article内容管理页面 原 ...
- axios 请求拦截器响应拦截器
一. 拦截器介绍 一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器.响应拦截器. 请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie.请求体加验证.设置请求头等,相 ...
- uni-app:实现页面未登录时拦截,弹出‘请先登录提示’
uni-app:实现页面未登录时拦截,弹出'请先登录提示' 首先我的接口是封装好的,如图所示: 若需要判断是否登录,只需将auth改为true auth: true 在index.js中添加逻辑 我是 ...
- vue请求拦截器 响应拦截器
import axios from "axios"; // 创建一个axios的appconst request = axios.create({baseURL:'http://1 ...
- springBoot之过滤器和拦截器的使用
在springBoot中,过滤器和拦截器的使用. 过滤器 概述 过滤器是什么? 简单的来说,过滤器就是过滤的作用,在web开发中过滤一些我们指定的url. 过滤器主要做什么? 过滤掉一些不需要的东西, ...
- axios 最全 请求拦截器 响应拦截器 配置公共请求头 超时时间 以及get delete post put 四种请求传参方式
axios 拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是在接收到响应后进行一些操 ...
- 前端学习(2708):重读vue电商网站28之通过axios请求拦截器添加 token
通过axios请求拦截器添加 token,保证拥有获取数据的权限. 原因是,后台那边除开登录的 api,其它都需要进行授权 . 因此,我们可以利用 axios 中interceptors属性,其中有一 ...
最新文章
- mysql中char与varchar的区别分析(补充一句,int和integer没区别)
- java安全编码指南之:堆污染Heap pollution
- SpringMVC级联获取前台数据
- Android 设置定时刷新页面数据,最小自动刷新时间
- jRating五星评级
- Android之蓝牙开发浅析
- Debug解决问题方法论
- 夏普 DN7C3A006 PM2.5 传感器测量步骤及存在问题
- 相机标定后图像像素和物理尺寸对应_你需要事件相机标定板,咱做了个
- 元器件封装形式对照表_二三极管封装形式图表
- Mysql创建存储过程,使用游标Cursor循环更新
- [RQNOJ]PID34 / 紧急援救
- matlab偏最小二乘截距,matlab代写偏最小二乘回归(PLSR)和主成分回归(PCR)
- Holy Grail 2019南京网络赛
- 2021年程序人生的随想总结
- 记一次内网SSH后门误报事件
- python运维工程师前景及待遇_做运维工程师有前途吗?
- 如何下载MySQL各个版本
- 转码机器人(微信转码,小程序转码)
- 轮式移动机器人里程计分析