package com.walker.web.security; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; import java.util.Collection; /** * 请求资源过滤拦截元数据提供者,该对象会再用户每次请求时根据URL组装返回对应的角色集合, * 以供框架判断是否能够访问。

* 该对象替换老版本中的MySecurityMetadataSource * * @author 时克英 * @date 2018-10-16 * @since 0.6.0 * */ public class DefaultSecurityMetadataSource implements FilterInvocationSecurityMetadataSource { protected final transient Logger logger = LoggerFactory.getLogger(getClass()); private ResourceLoadProvider resourceLoaderProvider; public void setResourceLoaderProvider(ResourceLoadProvider resourceLoaderProvider) { if(resourceLoaderProvider == null){ throw new IllegalArgumentException("resourceLoaderProvider is required!"); } this.resourceLoaderProvider = resourceLoaderProvider; logger.info("===========开始初始化resourceLoaderProvider.loadResource();"); // this.resourceLoaderProvider.loadResource(); } @Override public Collection getAllConfigAttributes() { return null; } @Override public Collection getAttributes(Object object) throws IllegalArgumentException { return this.resourceLoaderProvider.getAttributes(object); } @Override public boolean supports(Class arg0) { return true; } public synchronized void reloadResource(){ this.resourceLoaderProvider.reloadResource(); logger.info("resourceLoaderProvider重新加载完毕!"); } }