|
|
@@ -2,18 +2,24 @@ package com.usoftchina.bi.auth.interceptor;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.usoftchina.bi.auth.annotation.Auth;
|
|
|
+import com.usoftchina.bi.core.base.RepCode;
|
|
|
+import com.usoftchina.bi.core.base.RepEntity;
|
|
|
import com.usoftchina.bi.core.utils.GetTokenDataUtil;
|
|
|
+import com.usoftchina.bi.core.utils.JsonUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
+import org.springframework.http.MediaType;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.method.HandlerMethod;
|
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
-import javax.management.OperationsException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.PrintWriter;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@Component
|
|
|
@@ -38,13 +44,12 @@ public class SecurityInterceptor implements HandlerInterceptor {
|
|
|
}
|
|
|
// 从参数中取出用户身份并验证
|
|
|
String admin = auth.user();
|
|
|
- logger.info("auth={}", admin);
|
|
|
String token = request.getHeader("token");
|
|
|
Map<String, String> resultMap = GetTokenDataUtil.getTokenData(token);
|
|
|
- logger.info("user={}", resultMap.get("role"));
|
|
|
+ logger.info("authRole={},userRole={}", admin, resultMap.get("role"));
|
|
|
if (!admin.equals(resultMap.get("role"))) {
|
|
|
- logger.error("permission denied");
|
|
|
- throw new OperationsException("权限不足");
|
|
|
+ returnErrorMessage(request, response, RepCode.NoAuthority);
|
|
|
+ return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -58,4 +63,28 @@ public class SecurityInterceptor implements HandlerInterceptor {
|
|
|
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 错误信息处理
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param repCode
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ private void returnErrorMessage(HttpServletRequest request, HttpServletResponse response, RepCode repCode) throws IOException {
|
|
|
+ //跨域处理
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "GET");
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "POST");
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "OPTIONS");
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
|
|
|
+ response.setHeader(HttpHeaders.ACCESS_CONTROL_MAX_AGE, "3600");
|
|
|
+
|
|
|
+ response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ PrintWriter writer = response.getWriter();
|
|
|
+ writer.print(JsonUtils.toJsonString(new RepEntity(repCode)));
|
|
|
+ writer.flush();
|
|
|
+ writer.close();
|
|
|
+ }
|
|
|
}
|