如何在SpringBoot中配置拦截器,实现登录拦截?
2018-11-26 15:36
483 查看
前言:必要的说明
-
拦截器特性的变化
Spring4时代,拦截器的定义是:动态拦截Action调用的对象的组件
Spring5时代,拦截器不光能够拦截动态资源,也会拦截静态资源
-
配置方法的变化
在SpringMVC中,需要的是在mvc.xml中配置拦截器
在SpringBoot中,需要的是在WebMvcConfigurer中配置拦截器
-
声明拦截器的新方式
在Java7的时候,通过继承HandlerInteceptorAdapter来声明一个拦截器
在Java8中,由于可以直接空实现,所以可以直接实现HandlerInteceptor接口,而不用再在去继承HandlerInteceptorAdapter了,也就是说原先的适配器其实没有必要再去使用了
以下是拦截器的配置使用,所有配置均按照最新的来配置
- 拦截器的声明
public class CheckLoginInteceptor implements HandlerInteceptor{ @Override public void preHandle(HttpServletRequest req,HttpServletResponse resp,Object handler){ //由于Spring5的新特性会拦截静动态资源,所以 if(handler instanceof HandlerMethod){ //判断session中是否有对象 //UserContext为自设工具类,主要是从session中取对象用的 User user = UserContext.getCurrentUser(); if(!Optional.ofNullable(user).isPresent()){ resp.sendRedirect("/login.html"); return false; } } //其他情况放行 return true; } }
- 拦截器的配置
@SpringBootApplication @Import(CoreConfig.class) @PropertySource("classpath:application.properties") public class WebSiteApplication implements WebMvcConfigurer{ //此处对拦截器进行注册,这里需要拦截器的一个对象 //以及配置拦截目录,以及例外目录 public void addInteceptors(InteceptorRegistry registry){ registry.addInteceptor(new CheckLoginInteceptor()) .addPathPatterns("/**") .excludePathPatterns("/login.html","/login"); } public static void main(String args[]){ SpringBootApplication.run(WebSiteApplication.class,args); } }阅读更多
相关文章推荐
- spring boot 使用拦截器 实现 用户登录拦截
- SpringBoot下如何配置实现跨域请求?
- SpringBoot下如何配置实现跨域请求?
- SpringBoot下如何配置实现跨域请求?
- spring boot如何使用spring AOP实现拦截器
- SpringBoot下如何配置实现跨域请求?
- SpringBoot下如何配置实现跨域请求?
- Struts 通过拦截器实现登录后跳转到登录前页面 处理普通Http请求和Ajax请求时拦截配置
- Spring实现原理分析(二十五).Spring Boot如何把application.*中的配置数据转换成对象
- 利用Nginx负载均衡的访问SpringBoot服务,还有如何利用Nginx实现404,500等错误页面的拦截
- SpringBoot下如何配置实现跨域请求?
- spring-boot 是如何实现自动配置的
- Spring Boot WebMvcConfigurerAdapter 实现拦截器无配置
- spring boot配置shiro安全框架及用户登录权限验证实现
- SpringBoot下如何配置实现跨域请求?
- Spring实现原理分析(二十五).Spring Boot如何把application.*中的配置数据转换成对象
- SpringBoot下如何配置实现跨域请求?
- SpringBoot下如何配置实现跨域请求?
- SpringBoot环境下配置AOP切面实现权限拦截
- springboot学习笔记2(拦截器,redis,授权登录,读取yml配置文件)