|
|
@@ -0,0 +1,55 @@
|
|
|
+package com.usoftchina.smartschool.account.interceptor;
|
|
|
+
|
|
|
+import com.usoftchina.smartschool.auth.jwt.JwtHelper;
|
|
|
+import com.usoftchina.smartschool.auth.jwt.JwtInfo;
|
|
|
+import com.usoftchina.smartschool.context.BaseContextHolder;
|
|
|
+import com.usoftchina.smartschool.utils.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.web.method.HandlerMethod;
|
|
|
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.util.Enumeration;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author chenwei
|
|
|
+ * @date 2019/2/18
|
|
|
+ */
|
|
|
+public class AuthRestInterceptor extends HandlerInterceptorAdapter {
|
|
|
+
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(AuthRestInterceptor.class);
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
+ if (handler instanceof HandlerMethod) {
|
|
|
+ HandlerMethod handlerMethod = (HandlerMethod) handler;
|
|
|
+ String token = null;
|
|
|
+ Enumeration<String> headers = request.getHeaders("Authorization");
|
|
|
+ while(headers.hasMoreElements()){
|
|
|
+ //取最后一个元素
|
|
|
+ token = headers.nextElement();
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(token)) {
|
|
|
+ JwtInfo infoFromToken = JwtHelper.getInfoFromToken(token, "auth/pub.key");
|
|
|
+ BaseContextHolder.setAppId(infoFromToken.getAppId());
|
|
|
+ BaseContextHolder.setUserId(infoFromToken.getUserId());
|
|
|
+ BaseContextHolder.setUserName(infoFromToken.getUserName());
|
|
|
+ BaseContextHolder.setSchoolId(infoFromToken.getSchool_id());
|
|
|
+ BaseContextHolder.setToken(token);
|
|
|
+ logger.info("request={} school_id={} token={} \\r\\n userName={} ", request.getRequestURI(),
|
|
|
+ infoFromToken.getSchool_id(), token, infoFromToken.getUserName());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // no mapping
|
|
|
+ }
|
|
|
+ return super.preHandle(request, response, handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
|
|
+ BaseContextHolder.remove();
|
|
|
+ super.afterCompletion(request, response, handler, ex);
|
|
|
+ }
|
|
|
+}
|