springboot项目登陆时需要拦截器,SpringBoot内部集成的是SpringMVC控制框架,所以拦截器使用起来跟SpringMVC没有区别,实现拦截器需要继承HandlerInterceptorAdapter类
package com.hhzx.commad;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.hhzx.entity.UserPermissions;
//springboot 拦截器
@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
UserPermissions user = (UserPermissions) request.getSession().getAttribute("loginUser");
// 获得当前路径
if (user!=null) {
// 有权限
return true;
} else {
response.sendRedirect("/login.html");
return false;
}
}
}
preHandle方法需要返回值,如果是false 则不往下执行。因为拦截器是SpringMvc的,必须DispatcherServlet请求的才能拦截到,然后再到webconfig类使用拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/islogin","/login.html","/static/**");
super.addInterceptors(registry);
}
webconfig文件在初始化时会首先执行,所以每次一进来就会执行拦截器
我平时写的博客也不多,都是一些小的知识点,大家都相互交流,有什莫不懂得都可以问的