spring boot 使用拦截器 实现 用户登录拦截

登录拦截和和权限拦截实现类似
 
首先自定义一个【DefineAdapter】类,这个类我是用来放自定义的配置(比如 自定义请求参数,自定义拦截器等),集成WebMvcConfigurerAdapter 重写他的addInterceptors 方法,将你拦截器的实现类
加入即可,DefineAdapter 代码如下:
 
@Configuration
public class DefineAdapter extends WebMvcConfigurerAdapter {
@Autowired
public RoleInterceptor roleInterceptor;//用户角色拦截器
@Autowired
public LoginInterceptor loginInterceptor;//用户登录拦截器
@Autowired
MeidaRequestDataCustomArgumentResolver meidaRequestDataCustomArgumentResolver;//自定义参数绑定
//自定义参数绑定
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(meidaRequestDataCustomArgumentResolver);
}
//自定义拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//用户角色拦截器
registry.addInterceptor(roleInterceptor).
addPathPatterns("/**”);
//用户登录拦截器
registry.addInterceptor(loginInterceptor).
addPathPatterns("/**").
addPathPatterns("/*/login").
addPathPatterns("/*/h5/login").
excludePathPatterns("/switch/*");
super.addInterceptors(registry);
}
 
自定义参数绑定 可以不用管,你就当没有那段代码!!
addInterceptors:添加你自定义拦截器的实现逻辑类
addPathPatterns:添加你要拦截的请求路径,如果有多个路径,就继续addPathPatterns
excludePathPatterns:添加你不需要拦截的请求路径
 
我拦截器具体的实现逻辑是LoginInterceptor 这个类,代码如下:
 
@Service
public class LoginInterceptor extends HandlerInterceptorAdapter { {
    protected static final Log logger = LogFactory.getLog(LoginInterceptor.class);
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
            
                String userId = request.getParameter("userId");
                if (StringUtils.isNotBlank(userId)){
                return false;
       
        }
}
继承 HandlerInterceptorAdapter 抽象类,实现preHandle方法,在里面写你的拦截逻辑。
 
完!
原文地址:https://www.cnblogs.com/zhangXingSheng/p/7744993.html