Ver Fonte

Update 调整localhost指定siteId登录

在 nginx 中配置  proxy_set_header Site-Id 2;
YueYunyun há 2 anos atrás
pai
commit
1d3366a286

+ 37 - 2
VB_DSM_V2.1/vbdsm-web/vbdsm-passport/src/main/java/cn/vbdsm/passport/mvc/action/web/AuthAction.java

@@ -11,6 +11,8 @@ import javax.core.common.utils.RandomNumUtils;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -29,6 +31,7 @@ import cn.vbdsm.passport.service.IAuthService;
 @RequestMapping("/web")
 public class AuthAction extends BaseAction {
 
+    private static final Log log = LogFactory.getLog(AuthAction.class);
     @Resource
     private IAuthService authService;
 
@@ -79,8 +82,17 @@ public class AuthAction extends BaseAction {
     public ModelAndView loginForDemo(HttpServletRequest request, HttpServletResponse response) {
         String domain = getDomain(request);
         String ip = getIpAddr(request);
+        Long localSiteId = null;
+        String siteIdStr = request.getHeader("Site-Id");
+        if(!siteIdStr.isEmpty()){
+            try{
+                localSiteId = Long.parseLong(siteIdStr);
+            }catch (Exception e){
+                log.error("Site-Id is not number");
+            }
+        }
         String agent = request.getHeader("User-Agent").toLowerCase();
-        ResultMsg<JSONObject> result = authService.login("zh_CN", domain, "demo", "demo", null, null, ip, agent);
+        ResultMsg<JSONObject> result = authService.login("zh_CN", domain, "demo", "demo", null, null, ip, agent,localSiteId);
         if (SystemConstant.RESULT_STATUS_SUCCESS == result.getStatus()) {
             writeCookie(request, response, result.getData());
         }
@@ -101,9 +113,18 @@ public class AuthAction extends BaseAction {
             , @RequestParam(value = "authCode", required = false) String authCode) {
         String domain = getDomain(request);
         String ip = getIpAddr(request);
+        Long localSiteId = null;
+        String siteIdStr = request.getHeader("Site-Id");
+        if(!siteIdStr.isEmpty()){
+            try{
+                localSiteId = Long.parseLong(siteIdStr);
+            }catch (Exception e){
+                log.error("Site-Id is not number");
+            }
+        }
         String agent = request.getHeader("User-Agent").toLowerCase();
         Object session_code = request.getSession().getAttribute(SystemConstant.SYSTEM_LOGIN_AUTHCODE);
-        ResultMsg<JSONObject> result = authService.login("zh_CN", domain, loginName, loginPass, authCode, session_code, ip, agent);
+        ResultMsg<JSONObject> result = authService.login("zh_CN", domain, loginName, loginPass, authCode, session_code, ip, agent,localSiteId);
         if (SystemConstant.RESULT_STATUS_SUCCESS == result.getStatus()) {
             request.getSession().removeAttribute(SystemConstant.SYSTEM_LOGIN_AUTHCODE);
             writeCookie(request, response, result.getData());
@@ -137,4 +158,18 @@ public class AuthAction extends BaseAction {
         CookiesUtil.write(domain, SystemConstant.SYSTEM_LOGIN_COOKIE, authService.genUserkey(json), response, request);
     }
 
+//    private String getCookieDomain(HttpServletRequest request) {
+//        String domain = request.getHeader("Accept");
+//        log.info("domain1:" + domain);
+//        if (domain == null || domain.trim().isEmpty()) {
+//            log.info("domain2:" + domain);
+//            domain = getDomain(request);
+//        }
+//        if (domain == null || domain.trim().isEmpty()) {
+//            log.info("domain3:" + domain);
+//            domain = "vbdsm.com";
+//        }
+//        return domain;
+//    }
+
 }

+ 1 - 1
VB_DSM_V2.1/vbdsm-web/vbdsm-passport/src/main/java/cn/vbdsm/passport/service/IAuthService.java

@@ -25,7 +25,7 @@ public interface IAuthService {
 	 * @param response
 	 * @return
 	 */
-	public ResultMsg<JSONObject> login(String local,String domain,String loginName,String loginPass,String authCode,Object sessionCode,String loginIp,String agent);
+	public ResultMsg<JSONObject> login(String local,String domain,String loginName,String loginPass,String authCode,Object sessionCode,String loginIp,String agent,Long localSiteId);
 	
 	/**
 	 * cache中删除存在的key

+ 21 - 22
VB_DSM_V2.1/vbdsm-web/vbdsm-passport/src/main/java/cn/vbdsm/passport/service/impl/AuthService.java

@@ -55,7 +55,7 @@ public class AuthService implements IAuthService {
      * @return
      */
     @Override
-    public ResultMsg<JSONObject> login(String local, String domain, String loginName, String loginPass, String authCode, Object sessionCode, String loginIp, String agent) {
+    public ResultMsg<JSONObject> login(String local, String domain, String loginName, String loginPass, String authCode, Object sessionCode, String loginIp, String agent,Long localSiteId) {
 
         if (StringUtils.isEmpty(domain)) {
             return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "您必须使用域名访问");
@@ -88,28 +88,27 @@ public class AuthService implements IAuthService {
             return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "该用户未分配机构,不允许登录,请联系管理员");
         }
         Site site;
-        //if (domain.equals("vbdsm.com")) {
-        //    site = new Site();
-        //    site.setConfig("{\"platform\":{\"01200008\":\"passport\",\"01200007\":\"ps\",\"01200002\":\"gov\",\"01200009\":\"manage\",\"01200012\":\"m\",\"01200013\":\"msg\",\"01200014\":\"govnew\"}}");
-        //    site.setDomain(domain);
-        //    //site.setId(24L);
-        //    site.setId(1L);
-        //    site.setName("VBER需求侧管理平台");
-        //} else {
-        //    //检查机构对应的站点访问权限
-        //    site = langService.getSiteByCidAndDomain(user.getCompanyId(), domain).getData();
-        //    if (site == null) {
-        //        langService.removeSitesCacheByCompanyId(user.getCompanyId());
-        //        log.error("用户" + user.getLoginName() + ",不能在" + domain + "站点下登录");
-        //        return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "用户不存在");
-        //    }
-        //}
-        site = langService.getSiteByCidAndDomain(user.getCompanyId(), domain).getData();
-        if (site == null) {
-            langService.removeSitesCacheByCompanyId(user.getCompanyId());
-            log.error("用户" + user.getLoginName() + ",不能在" + domain + "站点下登录");
-            return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "用户不存在");
+        if (localSiteId!=null) {
+            site = new Site();
+            site.setConfig("{\"platform\":{\"01200008\":\"passport\",\"01200007\":\"ps\",\"01200002\":\"gov\",\"01200009\":\"manage\",\"01200012\":\"m\",\"01200013\":\"msg\",\"01200014\":\"govnew\"}}");
+            site.setDomain(domain);
+            site.setId(localSiteId);
+            site.setName("VBER需求侧管理平台");
+        } else {
+            //检查机构对应的站点访问权限
+            site = langService.getSiteByCidAndDomain(user.getCompanyId(), domain).getData();
+            if (site == null) {
+                langService.removeSitesCacheByCompanyId(user.getCompanyId());
+                log.error("用户" + user.getLoginName() + ",不能在" + domain + "站点下登录");
+                return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "用户不存在");
+            }
         }
+//        site = langService.getSiteByCidAndDomain(user.getCompanyId(), domain).getData();
+//        if (site == null) {
+//            langService.removeSitesCacheByCompanyId(user.getCompanyId());
+//            log.error("用户" + user.getLoginName() + ",不能在" + domain + "站点下登录");
+//            return new ResultMsg<JSONObject>(SystemConstant.RESULT_STATUS_ERROR, "用户不存在");
+//        }
 
 
         long currTime = System.currentTimeMillis();