springboot项目配置拦截器,进行登陆等拦截
新建拦截类:
public class LoginInterceptor implements HandlerInterceptor{
	private static Log logger = LogFactory.getLog(LoginInterceptor.class);
	//handle 前
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		SysUser user  = (SysUser) request.getSession().getAttribute("user");
		logger.info("***********************执行了拦截器*************************");
		if(user==null) {
              //未登陆向前端返回数据
			JsonResult jsonResult = new JsonResult("未登陆");
			jsonResult.setFlag(0);
			String jsonString = JSONObject.toJSONString(jsonResult);
			PrintWriter writer = null;
	        response.setCharacterEncoding("UTF-8");
	        response.setContentType("text/html; charset=utf-8");
	        try {
	            writer = response.getWriter();
	            writer.print(jsonString);
	        } catch (IOException e) {
	            logger.info("未登陆",e);
	        } finally {
	            if (writer != null)
	                writer.close();
	        }
			return false;
		}else {
			return true;
		}
	}
    
    //post 时
	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub
	}
    //controller 后
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
	}
}
新建配置类:
对拦截器进行配置 因为springboot本来就是很大程度降低配置的繁琐,所以我觉得再去写配置文件去控制拦截器是否开启就没必要,就在类里面配了一个变量去控制是否开启。
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
//tag 为true 则为开启状态,为false 则为关闭状态
private boolean tag=false; @Override
public void addInterceptors(InterceptorRegistry registry) { // addPathPatterns 用于添加拦截规则
// excludePathPatterns 配置某些路径不拦截
if(tag==true) {
InterceptorRegistration addInterceptor = registry.addInterceptor(new LoginInterceptor());
addInterceptor.excludePathPatterns("/test");
addInterceptor.addPathPatterns("/**");
}else { } //如果有多个拦截器
//InterceptorRegistration addInterceptor2 = registry.addInterceptor(new MyInterceptor2()); super.addInterceptors(registry);
}
}
springboot项目配置拦截器,进行登陆等拦截的更多相关文章
- SSH进阶(2)——用Struts拦截器实现登陆限制
		拦截器从字面意思来看就是限制.限制用户訪问某些网页.在Action提出请求之前用拦截器来做权限设置,让符合的用户跳入对应的界面中.近期做的一个商城项目中就用到了自己定义的拦截器,实现了一个简单的ses ... 
- springboot项目配置logback日志系统
		记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ... 
- Springboot项目 配置数据库连接属性后,启动项目报错
		Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ... 
- JavaWeb -- Struts 自定义拦截器, 登录权限拦截
		1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ... 
- AOP 貌似是拦截器 对方法进行拦截
		AOP 貌似是拦截器 对方法进行拦截 
- springboot项目配置类
		一.在springboot项目中,如果不进行配置,直接访问静态页面是无法访问的,需要进行配置,springboot舍弃了XML文件的配置方式,这里我们采用开发配置类的方式.新建MvcConfig类,加 ... 
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
		其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ... 
- AngularJs HTTP响应拦截器实现登陆、权限校验
		$httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信.在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作.还有一些情况是,我们 ... 
- Struts2自定义拦截器实例—登陆权限验证
		版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ... 
随机推荐
- react  headtop  title 截取
			render() { const nav = this.props.nav const text = nav && nav.length > 5 ? this.strHandle ... 
- TED #03# 10 ways to have a better conversation
			Teach you how to talk and how to listen Many of you have already heard a lot of advice on this, thin ... 
- 20155201 实验二《Java面向对象程序设计》实验报告
			20155201 实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. ... 
- 20145325张梓靖 《Java程序设计》第2周学习总结
			20145325张梓靖 <Java程序设计>第2周学习总结 教材学习内容总结 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节 ... 
- HeyWeGo第五周项目总结
			HeyWeGo第五周项目总结 项目内容 使用java程序开发一款扫雷游戏 游戏项目规划: 确定游戏中方块格子的个数 确定游戏中地雷的个数(初始10个),完成布雷 计算每个方块周围的雷数,在方块周围本身 ... 
- Linux点亮一个灯
			一 文件及其驱动程序 1.解压linux 压缩包 使用命令: tar xzvf linux-3.0.8-20140925.tgz ( tar xvf ------.tar tar xzvf------ ... 
- 解决方案--duilib中edit获得鼠标焦点后右边框被覆盖
			用duilib做了一个登录框,用户名的输入使用的是edit控件. XML中是这样写的: <Edit name="subdomain_edit" tipvalue=" ... 
- [问题解决]不使用PWM调速系统,彻底解决一个L298N带动两个电机却转速不同的问题
			问题描述:由单片机的VCC引脚供电,使用L298N控制两个电机,发现左右两个轮子的转速老是不一样,更多的情况是左轮转速高(左轮电机接OUT1和OUT2),右轮转速低(右轮电机接OUT3和OUT4)甚至 ... 
- python2.7安装第三方库错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0
			开发环境:win10, x64, pycharm社区版,python2.7.13 python2经常会遇见乱码的问题,并且一遇到中文就乱码.所以我们在安装的时候要注意,无论是解释器interpreto ... 
- Sublime Text 3 配置文件路径修改
			Sublime Text 3安装完以后(安装过程不再演示),第一次打开会在C:\Users\admin\AppData\Roaming目录下创建一个Sublime Text 3目录用于存放Sublim ... 
