| 
					
				 | 
			
			
				@ -1,8 +1,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.gateway.filter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.redis.core.StringRedisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -20,19 +23,24 @@ import java.util.regex.Pattern; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class CsrfFilter implements Filter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private StringRedisTemplate redisTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger log = LoggerFactory.getLogger(CsrfFilter.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 过滤器配置对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    FilterConfig filterConfig = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 是否启用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${security.csrf.enable}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean enable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean getEnable(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String strEnable = redisTemplate.opsForValue().get("security:csrf:enable"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isNotBlank(strEnable)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return "1".equals(strEnable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        redisTemplate.opsForValue().set("security:csrf:enable","0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 忽略的URL 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -63,7 +71,7 @@ public class CsrfFilter implements Filter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String referer = request.getHeader("Referer"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String host = request.getServerName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 不启用或者已忽略的URL不拦截 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!enable ||referer == null||referer.indexOf("http://ehr.yihu.com")==0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!getEnable() ||referer == null||referer.indexOf("http://ehr.yihu.com")==0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ||referer.indexOf("https://zhyzh.gongshu.gov.cn")==0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ||referer.indexOf("27.154.233.186")>0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ||referer.indexOf(host)>0){ 
			 |