|
@@ -18,12 +18,14 @@ import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.http.converter.HttpMessageConverter;
|
|
import org.springframework.http.converter.HttpMessageConverter;
|
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
|
import org.springframework.web.servlet.HandlerExceptionResolver;
|
|
import org.springframework.web.servlet.HandlerExceptionResolver;
|
|
|
|
+import org.springframework.web.servlet.LocaleResolver;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
import org.springframework.web.servlet.NoHandlerFoundException;
|
|
import org.springframework.web.servlet.NoHandlerFoundException;
|
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
|
@@ -31,6 +33,8 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
|
|
|
|
+import org.springframework.web.servlet.i18n.SessionLocaleResolver;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.ServletException;
|
|
@@ -175,35 +179,55 @@ public class MyWebMvcConfigurer implements WebMvcConfigurer {
|
|
// registry.addMapping("/**");
|
|
// registry.addMapping("/**");
|
|
// }
|
|
// }
|
|
|
|
|
|
- // 添加拦截器
|
|
|
|
- @Override
|
|
|
|
- public void addInterceptors(InterceptorRegistry registry) {
|
|
|
|
- // 跨域
|
|
|
|
-// registry.addInterceptor(corsInterceptor);
|
|
|
|
- // wxJava框架 ThreadLocal的remove问题
|
|
|
|
|
|
+// // 添加拦截器
|
|
|
|
+// @Override
|
|
|
|
+// public void addInterceptors(InterceptorRegistry registry) {
|
|
|
|
+// // 跨域
|
|
|
|
+//// registry.addInterceptor(corsInterceptor);
|
|
|
|
+// // wxJava框架 ThreadLocal的remove问题
|
|
|
|
+//
|
|
|
|
+// // 接口签名认证拦截器,该签名认证比较简单,实际项目中可以使用Json Web Token或其他更好的方式替代。
|
|
|
|
+// if ("true".equals(parameters.getSignature())) { // 开发环境忽略签名认证
|
|
|
|
+// registry.addInterceptor(new HandlerInterceptorAdapter() {
|
|
|
|
+// @Override
|
|
|
|
+// public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
|
|
|
|
+// Object handler) throws Exception {
|
|
|
|
+// // 验证签名
|
|
|
|
+// boolean pass = validateSign(request);
|
|
|
|
+// if (pass) {
|
|
|
|
+// return true;
|
|
|
|
+// } else {
|
|
|
|
+// logger.warn("签名认证失败,请求接口:{},请求IP:{},请求参数:{}", request.getRequestURI(),
|
|
|
|
+// getIpAddress(request), JSON.toJSONString(request.getParameterMap()));
|
|
|
|
+//
|
|
|
|
+// Result result = new Result();
|
|
|
|
+// result.setCode(ResultCode.UNAUTHORIZED.getCode()).setMessage("签名认证失败");
|
|
|
|
+// responseResult(response, result);
|
|
|
|
+// return false;
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// });
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
|
|
- // 接口签名认证拦截器,该签名认证比较简单,实际项目中可以使用Json Web Token或其他更好的方式替代。
|
|
|
|
- if ("true".equals(parameters.getSignature())) { // 开发环境忽略签名认证
|
|
|
|
- registry.addInterceptor(new HandlerInterceptorAdapter() {
|
|
|
|
- @Override
|
|
|
|
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
|
|
|
|
- Object handler) throws Exception {
|
|
|
|
- // 验证签名
|
|
|
|
- boolean pass = validateSign(request);
|
|
|
|
- if (pass) {
|
|
|
|
- return true;
|
|
|
|
- } else {
|
|
|
|
- logger.warn("签名认证失败,请求接口:{},请求IP:{},请求参数:{}", request.getRequestURI(),
|
|
|
|
- getIpAddress(request), JSON.toJSONString(request.getParameterMap()));
|
|
|
|
|
|
+ @Bean
|
|
|
|
+ public LocaleResolver localeResolver() {
|
|
|
|
+ // 使用SessionLocaleResolver或CookieLocaleResolver持久化Locale
|
|
|
|
+ SessionLocaleResolver resolver = new SessionLocaleResolver();
|
|
|
|
+ resolver.setDefaultLocale(Locale.ENGLISH); // 设置默认Locale
|
|
|
|
+ return resolver;
|
|
|
|
+ }
|
|
|
|
|
|
- Result result = new Result();
|
|
|
|
- result.setCode(ResultCode.UNAUTHORIZED.getCode()).setMessage("签名认证失败");
|
|
|
|
- responseResult(response, result);
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ @Bean
|
|
|
|
+ public LocaleChangeInterceptor localeChangeInterceptor() {
|
|
|
|
+ LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
|
|
|
|
+ interceptor.setParamName("lang"); // 支持通过?lang=zh_CN参数切换Locale
|
|
|
|
+ return interceptor;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void addInterceptors(InterceptorRegistry registry) {
|
|
|
|
+ registry.addInterceptor(localeChangeInterceptor()); // 注册拦截器
|
|
}
|
|
}
|
|
|
|
|
|
private void responseResult(HttpServletResponse response, Result result) {
|
|
private void responseResult(HttpServletResponse response, Result result) {
|