在拦截器中,获取访问的路径,然后判断该路径是否需要控制; 如果不需要控制,直接通过;否则,判断当前用户是否有访问该路径的权限,当前用户信息一般在登录成功后保存到session中。 第一步设置放行拦截地址 /** * Created by mis on 2016/7/30. * @author lvfang */ @EnableWebMvc @Configuration public class WebAppConfig extends WebMvcConfigurerAdapter { //将拦截器注入容器 @Bean HiseeInterceptor hiseeInterceptor(){ return new HiseeInterceptor(); } /** * 配置拦截器 * * @param registry * @author lvfang */ public void addInterceptors(InterceptorRegistry registry) { //这里参数是一个实现了HandlerInterceptor接口的拦截器 registry.addInterceptor(hiseeInterceptor()) .addPathPatterns("/**")//需要拦截的请求 .excludePathPatterns("/user/login") .excludePathPatterns("/user/exit");//不拦截的请求 } } 第二步设置拦截器 public class BaseInterceptor implements HandlerInterceptor { /** * 权限列表查询 * @param permissionDomainRepository * @param url * @return */ boolean falg = false; //获取session用户 UserSession userSession = SpringUtil.getBean(UserSession.class); //登录状态 boolean isLogin = userSession.isLogin(); //是否登录 if(!isLogin){ System.out.println("请登录 ... ..."); return false; } //请求资源 String url = request.getRequestURI(); //对比查询权限 Iterator<PermissionInfo> iterator = userSession .permissionInfos.iterator(); while(iterator.hasNext()){ PermissionInfo permissionInfo = iterator.next(); if(permissionInfo.getpUrl().equals(url)){ falg = true; } } return falg; } } https://www.jianshu.com/p/ce146de530c8