对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在
SpringBoot 开发的项目中,通过实现拦截器来实现用户登录拦截并验证。
1、Spring Boot 实现登录拦截原理
SpringBoot 通过实现 HandlerInterceptor 接口实现拦截器,通过实现
WebMvcConfigurer 接口实现一个配置类,在配置类中注入拦截器,最后再通过
@Configuration 注解注入配置。
1.1、实现 HandlerInterceptor 接口
实现 HandlerInterceptor 接口需要实现 3 个方法:preHandle、postHandle、
afterCompletion.
3 个方法各自的功能如下:
package blog.interceptor;
import blog.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class UserLoginInterceptor implements HandlerInterceptor {
/***
* 在请求处理之前进行调用(Controller 方法调用之前)
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行了拦截器的 preHandle 方法");
try {
HttpSession session = request.getSession();
//统一拦截(查询当前 session 是否存在 user)(这里 user 会在
每次登录成功后,写入 session)
User user = (User) session.getAttribute("user");
if (user != null) {
return true;
}