springboot item, the interceptor may be used for the following purposes:
- For login authentication;
- Performance check;
- Logging;
Log in to validate an example:
An interceptor needs to be rewritten, write a configuration class
Rewrite the code below interceptor (interceptor performed before controller)
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("user");
if (user == null){
request.setAttribute("msg","当前没有权限,请先登录");
request.getRequestDispatcher("/login").forward(request,response);
return false;//流程中断
}else {
return true;//流程继续
}
}
}
Configuration class code: addPathPatterns // This is the path to add intercept, excludePathPatterns exclude this intermediate path to intercept a plurality of paths by a comma
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//添加自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/","/index.html","/login","/userLogin","/static/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
}
controller
@Controller
public class LoginController {
@PostMapping("/userLogin")
public String userLogin(String username, String password, Model model,HttpSession session){
if (!StringUtils.isEmpty(username) && "123456".equals(password)){
//记录登录状态
session.setAttribute("user",username);
//跳转到主页
return "redirect:main.html";
}else {
model.addAttribute("msg","用户名或密码错误");
return "login";
}
}
}