单体权限

在拦截器中,获取访问的路径,然后判断该路径是否需要控制;
如果不需要控制,直接通过;否则,判断当前用户是否有访问该路径的权限,当前用户信息一般在登录成功后保存到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
原文地址:https://www.cnblogs.com/javakangkang/p/14000621.html