spring boot 使用拦截器 实现 用户登录拦截
Posted 薛定谔的猫!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法,在里面写你的拦截逻辑。
完!