main
黄海 1 year ago
parent 7d5c48c5d3
commit 45b60c0834

@ -6,7 +6,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//SpringBoot系列教程web篇之过滤器Filter使用指南
//https://blog.csdn.net/cxyxysam/article/details/135483785
@WebFilter(urlPatterns = "/*")
public class CorsFilter implements Filter {
@Override

@ -11,16 +11,11 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableZuulProxy
public class GwOpenAPIApplication {
@RequestMapping("/")
public String index(){
return "Hello,gw-openapi";
}
public static void main(String[] args) {
SpringApplication.run(GwOpenAPIApplication.class, args);
}
}

@ -20,80 +20,42 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
@EnableCaching //启用缓存,这个注解很重要;
public class RedisCacheConfig extends CachingConfigurerSupport {
/**
* .
*
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate<?,?> redisTemplate) {
@Bean
public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {
CacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
}
}
/**
* redis,jdbcTemplate;
*
* <p>
* CacheManagerCache
*
* <p>
* RedisTemplate
*
* <p>
* RedisStorage;
*
* @param factory : Springapplication.properties
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String,String> redisTemplate = new RedisTemplate<String, String>();
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(factory);
//key序列化方式;(不然会出现乱码;,但是如果方法上有Long等非String类型的话会报类型转换错误
//所以在没有自己定义key生成策略的时候以下这个代码建议不要这么写可以不配置或者自己实现ObjectRedisSerializer
//或者JdkSerializationRedisSerializer序列化方式;
RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
redisTemplate.setKeySerializer(redisSerializer);
redisTemplate.setHashKeySerializer(redisSerializer);
return redisTemplate;
}
}

@ -26,16 +26,14 @@ import java.util.regex.Pattern;
@Component
@ConfigurationProperties(prefix = "jwt.filter")
@ConfigurationProperties(prefix = "jwt.filter") //should_not_filter是通过这句话注入读取进内存的
public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
@Value("${jwt.secret}")
private String secret;
@Autowired
private TokenService tokenService;
@Autowired
private TokenService tokenService;
List<String> should_not_filter = new ArrayList<>();
@ -60,6 +58,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
@PostConstruct
private void init() {
//这是贪吃蛇吗?自己吃自己?
ArrayList<String> newList = new ArrayList<>();
for (String s : should_not_filter) {
newList.add(s.replaceAll("\\*\\*", "[^\\\\s]*"));
@ -84,7 +83,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
String path = request.getRequestURI();
String contextPath = request.getContextPath();
String pathInfo = path.replaceFirst(contextPath, "");
//不过滤的跳过
boolean matches = false;
for (String s : should_not_filter) {
Pattern pattern = Pattern.compile(s);
@ -92,6 +91,7 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
matches = matcher.matches();
if (matches) break;
}
//否则是需要过滤的
return !matches;
}
@ -102,9 +102,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
//Map<String, List<String>> requestQueryParams = ctx.getRequestQueryParams();
HttpServletRequest request = ctx.getRequest();
String Authorization = request.getHeader("Authorization");
if (Authorization == null){
if (Authorization == null) {
try {
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
@ -114,10 +114,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
} catch (Exception e) {
e.printStackTrace();
}
}
// String uri =ctx.getRequest().getRequestURI();
// String uri =ctx.getRequest().getRequestURI();
if (Authorization == null || Authorization.length() == 0) {
Response<TokenInfoVO> resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
@ -131,14 +130,14 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
String token = Authorization.replaceFirst(JwtUtil.AUTHORIZATION_STARTER, "");
Claims cs = JwtUtil.getClaimsFromToken(token, secret);
if(cs == null || cs.size() == 0) {
if (cs == null || cs.size() == 0) {
Response<TokenInfoVO> resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);
ctx.setResponseBody(json.toString());
ctx.getResponse().setContentType("text/json; charset=utf-8");
ctx.setResponseStatusCode(200);
System.out.println("cs:"+Authorization);
System.out.println("cs:" + Authorization);
return ctx.getResponse();
}
@ -155,8 +154,8 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
}
//验证数据是否过期
String checkToken = tokenService.getToken(TokenService.ONLINE_OPERRATOR+operatorId);
if(StringUtils.isEmpty(checkToken)){
String checkToken = tokenService.getToken(TokenService.ONLINE_OPERRATOR + operatorId);
if (StringUtils.isEmpty(checkToken)) {
Response<TokenInfoVO> resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);
@ -164,9 +163,9 @@ public class ZuulPreFilter extends com.netflix.zuul.ZuulFilter {
ctx.getResponse().setContentType("text/json; charset=utf-8");
ctx.setResponseStatusCode(200);
return ctx.getResponse();
}else{ //保持token心跳
if(checkToken.equals(token)){
}else{
} else { //保持token心跳
if (checkToken.equals(token)) {
} else {
Response<TokenInfoVO> resp = EncodeUtil.tokenErrorResp("Token 错误");
Object json = JSONObject.toJSON(resp);
ctx.setSendZuulResponse(false);

@ -85,6 +85,4 @@ public class JwtUtil {
}
return claims;
}
}

@ -6,8 +6,8 @@
<version>1.0.0</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<artifactId>ms-user</artifactId>
<name>ms-user</name>
<version>1.0.0</version>

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
整体业务,就这么两大部分,第一部分和软件相关。流程图里面的桩企、协议都是现在平台实际的,就是这么多
Loading…
Cancel
Save