SpringBoot自定义拦截器

1. 新建一个类实现HandlerInterceptor接口,覆盖接口中的方法

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获取session对象
        HttpSession session = request.getSession();
        //获取存到session中的值,session有值就放行,否则不放行
        User user = (User) session.getAttribute(UserInfoEnum.USER_NAME.getUserSessionInfo());
        if (user==null){
            //重定向
            response.sendRedirect("/api/login");
            return false;
        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

2. 写一个配置类,实现WebMvcConfigurer接口。覆盖其中的addInterceptors方法,编写拦截逻辑

package com.littlenorth.config;


import com.littlenorth.handler.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author lovelittlenorth
 * @create 2021/10/24 23:26
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    //注入自定义登录拦截器
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }


    /**
     * 注册拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册拦截器,拦截那些请求,放行那些请求
       registry.addInterceptor(loginInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/login","/static/**");
    }
}

打完收工

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容