在拦截器中,获取访问的路径,然后判断该路径是否需要控制;
如果不需要控制,直接通过;否则,判断当前用户是否有访问该路径的权限,当前用户信息一般在登录成功后保存到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