Browse Source

更新系统配置B2B地址,拦截更新方法

hejq 7 years ago
parent
commit
f4ffa2169b

+ 35 - 4
src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

@@ -9,12 +9,14 @@ import com.uas.platform.b2b.service.RoleService;
 import com.uas.platform.b2b.service.SigninLogService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.support.SecurityConstant;
+import com.uas.platform.b2b.support.SysConf;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.UserCreater;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.util.AgentUtils;
 import com.uas.platform.core.util.encry.Md5Utils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.sso.SSOConfig;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
 import com.uas.sso.entity.UserAccount;
@@ -34,6 +36,7 @@ import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
 import javax.servlet.http.HttpServletRequest;
@@ -68,6 +71,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
+    @Autowired
+    private SysConf conf;
+
     /**
      * 手机号正则表达式
      */
@@ -137,7 +143,7 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 	protected boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) {
         StringBuffer url = request.getRequestURL();
         String ip = AgentUtils.getIp(request);
-        logger.info("time: " + System.currentTimeMillis() + "; url: " + url + "ip: " + ip);
+        logger.info("onAuthenticateFailed, time: " + System.currentTimeMillis() + "; url: " + url + ", ip: " + ip);
 		SystemSession.clear();
 		User user = (User) request.getSession().getAttribute("user");
         logger.info("user: " + user != null ? JSON.toJSON(user) : "error");
@@ -169,16 +175,40 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 				return true;
 			}
             setResponseAuthorized(response, user, false);
+            if (!isRedirectAble(request)) {
+                try {
+                    printJson(response, new ModelMap("loginUrl", getLoginPage(request, response)));
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
 			return false;
 		}
     }
 
     /**
-     * 输出json格式
+     * 获取登录地址
      *
-     * @param obj
+     * @param request
+     * @param response
+     * @return
      * @throws IOException
      */
+    private String getLoginPage(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        // 引用页面
+        String refererSymbol = "Referer";
+        request.getSession().setAttribute(SSOConfig.SSOReferer, request.getHeader(refererSymbol));
+        SSOHelper.clearLogin(request, response);
+        String redirectUrl = (SSOHelper.getRedirectLoginUrl(request, conf.getB2b() + request.getRequestURI()));;
+        return redirectUrl;
+    }
+
+    /**
+     * 输出json格式
+     *
+     * @param obj 对象
+     * @throws IOException IO异常
+     */
     protected void printJson(HttpServletResponse response, Object obj) throws IOException {
         response.addHeader("Content-Type", "application/json; charset=UTF-8");
         PrintWriter printWriter = response.getWriter();
@@ -201,6 +231,7 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
             String authorizedValue = authorized ? HttpStatus.OK.name() : HttpStatus.UNAUTHORIZED.name();
             response.setHeader("authorized", authorizedValue);
         }
+        logger.info("setResponseAuthorized, user: " + (null != user ? JSON.toJSONString(user) : "error"));
         logger.info("status: " + status);
     }
 
@@ -214,7 +245,7 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 	protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
 		StringBuffer url = request.getRequestURL();
         String ip = AgentUtils.getIp(request);
-        logger.info("time: " + System.currentTimeMillis() + "; url: " + url + "ip: " + ip);
+        logger.info("onAuthenticateSuccess, time: " + System.currentTimeMillis() + "; url: " + url + ", ip: " + ip);
 		User user = (User) request.getSession().getAttribute("user");
 		SSOToken token = SSOHelper.attrToken(request);
 		// cookie变化的情况下,session可能还未变化

+ 1 - 1
src/main/resources/dev/sys.properties

@@ -1,5 +1,5 @@
 #path
-b2b=http://218.17.158.219:9000/b2b_test
+b2b=http://218.17.158.219:9000/b2b-test
 manage=http://218.17.158.219:9090/platform-manage
 manageInner=http://192.168.253.60:9090/platform-manage
 im=http://113.105.74.131:8092

+ 1 - 1
src/main/resources/test/sys.properties

@@ -1,5 +1,5 @@
 #path
-b2b=http://218.17.158.219:9000/b2b_test
+b2b=http://218.17.158.219:9000/b2b-test
 manage=http://218.17.158.219:9090/platform-manage
 manageInner=http://192.168.253.60:9090/platform-manage
 im=http://113.105.74.131:8092