spring boot 自定义登录拦截器
程序员文章站
2022-04-30 15:50:59
...
最近在努力学习spring boot中,这里记录一下拦截器的相关知识,在spring boot中,写一个自定义的拦截器类,用于拦截不通过登录之后而进行的非法访问,拦截的操作,也是日常项目中,都要用到的,不多说了,看正文。
要实现一个自定义登录的拦截器,这个类要实现HandlerInterceptor接口,HandlerInterceptor接口源码如下:
public interface HandlerInterceptor {
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
}
}
在JDK1.8中,该接口的方法前面有一个default进行修饰,表明实现该接口的类,可以只实现自己想要实现的方法,其他的方法,继承父类,从源码中也可以看到,用default修饰的方法,有方法体,关于default的更多知识,本篇不做过多说明。
自己的类实现这个接口,重写接口的preHandle方法即可,在方法体中,写自己的业务逻辑,我这里是做登录的拦截器,方法体的代码如下所示:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object name = request.getSession().getAttribute("name");
if(name == null){
request.setAttribute("msg","请先登录");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}
return true;
}
在写完自定义的拦截器后,接着,就是要将其放入spring boot容器中,以及对哪些请求进行放行。在自定义的MvcConfig类中,重写addInterceptors方法,我的具体代码如下所示:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/","/index.html","/login","/login.html",
"/user/login","/static/**","/webjars/**");
//excludePathPatterns方法的参数 为要放行的请求
}
addPathPatterns为要拦截的,excludePathPatterns为要放行的。
上一篇: spring mvc 文件上传+本地预览+一次提交
下一篇: 使用ant jar命令打包标签tld
推荐阅读
-
Spring Boot 开发个人博客--后台登录
-
Spring mvc 实现用户登录的方法(拦截器)
-
Spring Boot自定义配置属性源(PropertySource)
-
Spring Boot下如何自定义Repository中的DAO方法
-
Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
-
Spring Boot自定义配置属性源(PropertySource)
-
详解使用Spring Boot的AOP处理自定义注解
-
Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
-
Spring boot自定义http反馈状态码详解
-
spring boot+自定义 AOP 实现全局校验的实例代码