Commit 18102eaf by kenzo

fix pre env redis pwd

parent 298efaa8
......@@ -2,7 +2,6 @@ package com.cnooc.expert;
import com.cnooc.expert.common.response.ApiResult;
import lombok.AllArgsConstructor;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -10,11 +9,8 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ping {
private final StringRedisTemplate redisTemplate;
@GetMapping("/ping")
public ApiResult<String> ping() {
redisTemplate.opsForValue().set("ping", "Pong");
return ApiResult.successWithResult("Pong");
}
......
package com.cnooc.expert.common.interceptor;
import com.cnooc.expert.common.exception.GlobalErrorCodeConstants;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public abstract class AbstractAuthInterceptor implements HandlerInterceptor {
@Autowired
private ObjectMapper objectMapper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 放过OPTIONS请求
if ("OPTIONS".equals(request.getMethod())) {
return true;
}
if (request.getRequestURI().contains("favicon.ico")) {
return true;
}
// Annotation
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
if (handlerMethod.getBean().getClass().isAnnotationPresent(NoAuth.class)) {
return true;
}
}
/*if (!valid(request)) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); // 401
return false;
}*/
if (!valid(request)) {
returnJsonResponse(response, HttpStatus.UNAUTHORIZED.value(), GlobalErrorCodeConstants.LOGIN_EXPIRED.getCode(), "Token无效或已过");
return false;
}
return true;
}
abstract protected boolean valid(HttpServletRequest request);
private void returnJsonResponse(HttpServletResponse response, int status, int httpCode, String message) throws IOException {
response.setStatus(status);
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setCharacterEncoding("UTF-8");
Map<String, Object> result = new HashMap<>();
result.put("httpCode", httpCode);
result.put("message", message);
String json = objectMapper.writeValueAsString(result);
response.getWriter().write(json);
response.getWriter().flush();
}
}
......@@ -28,49 +28,48 @@ import java.util.Map;
@Component
public class LoginInterceptor implements HandlerInterceptor {
// @Resource(name="redisCommonTemplate")
// private RedisTemplate<String, Object> redisTemplate;
//
//
// @Override
// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// String token = request.getHeader("Authorization");
// log.info("request uri :"+request.getRequestURI());
// if (token == null || token.trim().isEmpty()) {
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// throw new BusinessException(HttpServletResponse.SC_UNAUTHORIZED, GlobalErrorCodeConstants.LOGIN_EXPIRED.getMsg());
// }
// try {
// Map<String, String> userMap = JwtUtils.getTokenInfo(token);
// String userId = userMap.get(TokenConstants.USER_ID);
// String uuidKey = userMap.get(TokenConstants.UUID_KEY);
// ValidUtils.isNotNull(uuidKey, "登录异常,请重新登录");
//
// ZhuanJiaUser zhuanjiaUser = (ZhuanJiaUser)redisTemplate.opsForValue().get(TokenConstants.LOGIN_USER_KEY_ + userId);
// if (zhuanjiaUser==null ){
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// response.getWriter().write("{\"httpCode\":401,\"message\":\"请先登录\"}");
// return false;
// }
// UserUtils.setUserId(zhuanjiaUser);
// // 所有条件都满足,放行请求
// return true;
//
// } catch (Exception e) {
// log.info("token解析异常 {}",e.getMessage(),e);
// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
// UserUtils.clear();
// throw new BusinessException(401, "请先登录");
// }
// }
//
// @Override
// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//
// }
//
// @Override
// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// UserUtils.clear();
// }
@Resource(name="redisCommonTemplate")
private RedisTemplate<String, Object> redisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("Authorization");
log.info("request uri :"+request.getRequestURI());
if (token == null || token.trim().isEmpty()) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
throw new BusinessException(HttpServletResponse.SC_UNAUTHORIZED, GlobalErrorCodeConstants.LOGIN_EXPIRED.getMsg());
}
try {
Map<String, String> userMap = JwtUtils.getTokenInfo(token);
String userId = userMap.get(TokenConstants.USER_ID);
String uuidKey = userMap.get(TokenConstants.UUID_KEY);
ValidUtils.isNotNull(uuidKey, "登录异常,请重新登录");
ZhuanJiaUser zhuanjiaUser = (ZhuanJiaUser)redisTemplate.opsForValue().get(TokenConstants.LOGIN_USER_KEY_ + userId);
if (zhuanjiaUser==null ){
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().write("{\"httpCode\":401,\"message\":\"请先登录\"}");
return false;
}
UserUtils.setUserId(zhuanjiaUser);
// 所有条件都满足,放行请求
return true;
} catch (Exception e) {
log.info("token解析异常 {}",e.getMessage(),e);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
UserUtils.clear();
throw new BusinessException(401, "请先登录");
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
UserUtils.clear();
}
}
package com.cnooc.expert.common.interceptor;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface NoAuth {
}
package com.cnooc.expert.common.interceptor;
import javax.servlet.http.HttpServletRequest;
public class WebAuthInterceptor extends AbstractAuthInterceptor {
@Override
protected boolean valid(HttpServletRequest request) {
// TODO 小程序认证逻辑
return true;
}
}
package com.cnooc.expert.config;
import com.cnooc.expert.common.interceptor.LoginInterceptor;
import com.cnooc.expert.common.interceptor.WebAuthInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
......@@ -11,30 +9,25 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class TheWebMvcConfigurer implements WebMvcConfigurer {
// @Autowired
// private LoginInterceptor loginInterceptor;
//
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
//
// // 注册登录拦截器,并设置拦截路径和排除路径
// registry.addInterceptor(loginInterceptor)
// .addPathPatterns("/**") // 拦截所有路径
// .excludePathPatterns( // 排除一些路径
// "/sys/**",
// "/verify/**",
// "/person/**",
// "/text/**",
// "/error/**",
// "/error"
// );
//
// registry.addInterceptor(webAuthInterceptor());
// }
//
// @Bean
// public WebAuthInterceptor webAuthInterceptor() {
// return new WebAuthInterceptor();
// }
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册登录拦截器,并设置拦截路径和排除路径
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**") // 拦截所有路径
.excludePathPatterns( // 排除一些路径
"/ping",
"/mock/**",
"/sys/**",
"/verify/**",
"/person/**",
"/text/**",
"/error/**",
"/error"
);
}
}
package com.cnooc.expert.controller.auth;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
@AllArgsConstructor
@RestController
public class AuthController {
}
......@@ -3,4 +3,4 @@ aks.config.security.mode=local
aks.config.security.prefix=AKSSEC(
aks.config.security.suffix=)AKSSEC
# Demo
spring.redis.password=AKSSEC(RjZaaDu+5E6BMnDAm5ZG+A==)AKSSEC
\ No newline at end of file
spring.redis.password=AKSSEC(UpTm5WRZXAMv/OIHNLNy9g==)AKSSEC
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment