欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

spring boot拦截器的使用场景示例详解

时间:2021-06-03 09:11:14|栏目:JAVA代码|点击:

前言

在用户登陆之后,我们一般会把用户登陆的状态和相关信息进行存储,把对应的token返回到客户端进行存储,下次请求过来时,系统可以通过token拿到当前这个用户的相关信息,这是授权通常的作法,而有时一些业务里,你存储的用户信息不是全局的,可能只是某几个接口会用户某些信息,而你把它存储起来就不是很合理;并且一些隐私信息持久化到redis也不合理,这时就需要统一对这种接口的请求做一起处理了。

拦截器HandlerInterceptor

我们可以去实现这个HandlerInterceptor接口,它会把请求页面前,请求页面后等方法,我们可以重写它们,把自己的逻辑加进来,比如我们可以在请求页面前,通过当前登陆人ID获取到当前登陆人能看的信息ID集合,并把这些ID集合以参数的形式传到这个页面里,这个过程是在服务端自动完成的,即对某个页面(接口)进行拦截,添加自己的逻辑。

/**
 * 当前用户的数据权限.
 */
@Slf4j
public class DataPermissionInterceptor implements HandlerInterceptor {
 @Override
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  logger.info("DataPermissionInterceptor.init");
  //业务逻辑,可能判断当前登陆人存储的数据权限类型,然后统一处理,拿到可以访问的数据编号集合
  String[] ids = {"1", "2", "3"};
  request.setAttribute("approveIds", StringUtils.join(ids, ","));
  return true;
 }
}

注册这个拦截器

/**
 * 注册拦截器
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

 @Override
 public void addInterceptors(InterceptorRegistry registry) {
  // 自定义拦截器,添加拦截路径和排除拦截路径
  registry.addInterceptor(new DataPermissionInterceptor()).addPathPatterns("/approve/**");
 }
}

在对应的页面(接口)里读取在拦截器里赋值的对象,就可以进行剩下的工作了。

通过这个例子我们了解到,对一些具有统一操作的动作,我们可以把它提取到拦截器里去完成。

总结

上一篇:Java设计模式之中介模式(Mediator模式)介绍

栏    目:JAVA代码

下一篇:深入理解Maven的坐标与依赖

本文标题:spring boot拦截器的使用场景示例详解

本文地址:http://www.codeinn.net/misctech/134487.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有