十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编这次要给大家分享的是详解spring boot拦截器,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
创新互联是一家专注于做网站、成都网站设计与策划设计,伊川网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:伊川等地区。伊川做网站价格咨询:18980820575
前言
在用户登陆之后,我们一般会把用户登陆的状态和相关信息进行存储,把对应的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/**"); } }
在对应的页面(接口)里读取在拦截器里赋值的对象,就可以进行剩下的工作了。
通过这个例子我们了解到,对一些具有统一操作的动作,我们可以把它提取到拦截器里去完成。
看完这篇关于详解spring boot拦截器的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。