我们可以去实现这个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/**");
}
}
深圳网站建设www.sz886.com