自定义一个拦截器实现HandlerInterceptor接口,然后创建一个配置类实现WebMvcConfigurer接口,用配置类的addInterceptor方法向容器中添加拦截器。
代码
自定义拦截器
package com.example.boot2admin.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override
//登陆前的身份验证
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
//获取session
if(session.getAttribute("LoginUser")!=null){
return true;
}
else {
//这里用session和model传不了值
//所以只能用req
request.setAttribute("msg","请先登录");
request.getRequestDispatcher("/").forward(request,response);
return false;
}
}
}
自定义配置类
package com.example.boot2admin.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class Config implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())//向容器中添加拦截器
.addPathPatterns("/**")//配置拦截路径 拦截全部 包括静态资源
.excludePathPatterns("/","/login","/js/**","/css/**","/fonts/**","/images/**");
//静态资源放行
}
}