Просмотр исходного кода

Merge branch 'login-logout' of ssh://10.10.101.21/source/platform-b2b into dev

wangmh 8 лет назад
Родитель
Сommit
ee2f1fa0bb

+ 11 - 1
src/main/java/com/uas/platform/b2b/controller/SecurityController.java

@@ -146,7 +146,8 @@ public class SecurityController {
 					SystemSession.setUser(user);
 					log(request, user);
 				}
-				return new ModelMap("returnUrl", returnUrl);
+				// returnUrl有时候为null,然后生成URL的时候会出现undefined
+				return new ModelMap("returnUrl", returnUrl==null?"":returnUrl);
 			}
 		}
 		return null;
@@ -167,6 +168,15 @@ public class SecurityController {
 		SSOConfig config = SSOHelper.getSSOService().getConfig();
 		model.addAttribute("askUrl", config.getCrossAskOutUrl());
 		model.addAttribute("returnUrl", String.valueOf(request.getSession().getAttribute(SSOConfig.SSOReferer)));
+		// 登录情况下,登出地址
+		Object logoutUrl = null;
+		boolean cross = SSOHelper.isCrossDomain(request);
+		if (cross) {
+			logoutUrl = SSOHelper.getRedirectRefererLogoutUrl(request);
+		} else {
+			logoutUrl = SSOHelper.getRedirectLogoutUrl(request, String.valueOf(request.getSession().getAttribute("SSOReferer")));
+		}
+		model.addAttribute("logoutUrl", logoutUrl);
 		return model;
 	}
 

+ 1 - 0
src/main/resources/test/account.properties

@@ -10,6 +10,7 @@ sso.app=b2b
 sso.secretkey=0taQcW073Z7G628g5H
 sso.cookie.secure=false
 sso.login.url=http://113.105.74.135:8001/sso/login
+sso.logout.url=http://113.105.74.135:8001/sso/logout
 
 #cross domain
 sso.ask.url=http://113.105.74.135:8001/sso/login/ask

+ 5 - 1
src/main/webapp/WEB-INF/views/normal/proxyLogin.html

@@ -25,7 +25,11 @@
 						
 						console.log(e);
 						// 已登录
-						window.location.href = e.returnUrl;
+						if (e.returnUrl.indexOf('/index')) {
+							window.location.href = e.returnUrl.replace("/index", "/");
+						} else {
+							window.location.href = e.returnUrl;
+						}
 					}, "json");
 				}
 			});

+ 8 - 3
src/main/webapp/WEB-INF/views/normal/proxyLogout.html

@@ -11,13 +11,18 @@
 </head>
 <body>
 <script type="text/javascript">
-	function proxyLogout(askUrl, retUrl) {
+	function proxyLogout(askUrl, logoutUrl, retUrl) {
 	    $.getJSON(askUrl + "?callback=?", function(d){
-	    	window.location.href = retUrl;
+			if (d.error) {
+				// 跳转登出页面
+				window.location.href = logoutUrl;
+			} else {
+				window.location.href = retUrl;
+			}
 	    });
 	}
 	$.getJSON('logout/crossBefore', function(data){
-		proxyLogout(data.askUrl, data.returnUrl);
+		proxyLogout(data.askUrl, data.logoutUrl, data.returnUrl);
 	});
 </script>
 <div align="center" style="margin-top: 180px;">