Эх сурвалжийг харах

规范包名,优化单点登录

shuzheng 9 жил өмнө
parent
commit
44e74215cd
13 өөрчлөгдсөн 131 нэмэгдсэн , 80 устгасан
  1. 18 10
      zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java
  2. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/ManageController.java
  3. 51 57
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/SSOController.java
  4. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsOrganizationController.java
  5. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsPermissionController.java
  6. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsRoleController.java
  7. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsSystemController.java
  8. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsUserController.java
  9. 46 0
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/interceptor/UpmsLoginInterceptor.java
  10. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/realm/UpmsRealm.java
  11. 1 1
      zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/util/SystemConstant.java
  12. 7 4
      zheng-upms/zheng-upms-server/src/main/resources/applicationContext-shiro.xml
  13. 1 1
      zheng-upms/zheng-upms-server/src/main/resources/springMVC-servlet.xml

+ 18 - 10
zheng-upms/zheng-upms-client/src/main/java/com/zheng/upms/client/filter/SSOFilter.java

@@ -1,5 +1,6 @@
 package com.zheng.upms.client.filter;
 package com.zheng.upms.client.filter;
 
 
+import com.zheng.common.util.CookieUtil;
 import com.zheng.common.util.RedisUtil;
 import com.zheng.common.util.RedisUtil;
 import com.zheng.upms.client.filter.util.RequestParameterUtil;
 import com.zheng.upms.client.filter.util.RequestParameterUtil;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
@@ -31,6 +32,10 @@ public class SSOFilter implements Filter {
 
 
     private final static Logger _log = LoggerFactory.getLogger(SSOFilter.class);
     private final static Logger _log = LoggerFactory.getLogger(SSOFilter.class);
 
 
+    // 局部会话key
+    private final static String ZHENG_UPMS_CLIENT_SESSION_ID = "zheng-upms-client-session-id";
+    // 单点同一个token所有局部会话key
+    private final static String ZHENG_UPMS_CLIENT_SESSION_IDS = "zheng-upms-client-session-ids";
     private String SYSTEM_NAME = "system_name";
     private String SYSTEM_NAME = "system_name";
     private String SSO_SERVER_URL = "sso_server_url";
     private String SSO_SERVER_URL = "sso_server_url";
     private String SSO_DEBUG = "sso_debug";
     private String SSO_DEBUG = "sso_debug";
@@ -53,11 +58,15 @@ public class SSOFilter implements Filter {
             return;
             return;
         }
         }
 
 
-        // 分配单点登录sessionId,不使用session获取会话id,改为cookie,防止session丢失
-        String sessionId = request.getSession().getId();
+        // 分配子系统登录sessionId,首次获取后缓存到cookie,防止session丢失
+        String clientSessionId = CookieUtil.getCookie(request, ZHENG_UPMS_CLIENT_SESSION_ID);
+        if (StringUtils.isEmpty(clientSessionId)) {
+            clientSessionId = request.getSession().getId();
+            CookieUtil.setCookie(response, ZHENG_UPMS_CLIENT_SESSION_ID, clientSessionId);
+        }
 
 
-        // 已登录
-        if (!StringUtils.isEmpty(RedisUtil.get(sessionId + "_token"))) {
+        // 判断局部会话是否登录
+        if (null != clientSessionId && !StringUtils.isEmpty(RedisUtil.get(ZHENG_UPMS_CLIENT_SESSION_ID + "_" + clientSessionId))) {
             // 移除url中的token参数
             // 移除url中的token参数
             if (null != request.getParameter("token")) {
             if (null != request.getParameter("token")) {
                 String backUrl = RequestParameterUtil.getParameterWithOutToken(request);
                 String backUrl = RequestParameterUtil.getParameterWithOutToken(request);
@@ -71,7 +80,6 @@ public class SSOFilter implements Filter {
         else {
         else {
             // 认证中心地址
             // 认证中心地址
             StringBuffer sso_server_url = new StringBuffer(filterConfig.getInitParameter(SSO_SERVER_URL));
             StringBuffer sso_server_url = new StringBuffer(filterConfig.getInitParameter(SSO_SERVER_URL));
-            sso_server_url.append("/sso");
             // 判断是否有认证中心token
             // 判断是否有认证中心token
             String token = request.getParameter("token");
             String token = request.getParameter("token");
             // 已拿到token
             // 已拿到token
@@ -79,7 +87,7 @@ public class SSOFilter implements Filter {
                 // HttpPost去校验token
                 // HttpPost去校验token
                 try {
                 try {
                     HttpClient httpclient = new DefaultHttpClient();
                     HttpClient httpclient = new DefaultHttpClient();
-                    HttpPost httpPost = new HttpPost(sso_server_url.toString() + "/token");
+                    HttpPost httpPost = new HttpPost(sso_server_url.toString() + "/sso/token");
 
 
                     List<NameValuePair> nvps = new ArrayList<>();
                     List<NameValuePair> nvps = new ArrayList<>();
                     nvps.add(new BasicNameValuePair("token", token));
                     nvps.add(new BasicNameValuePair("token", token));
@@ -91,10 +99,10 @@ public class SSOFilter implements Filter {
                         String result = EntityUtils.toString(httpEntity);
                         String result = EntityUtils.toString(httpEntity);
                         if (result.equals("success")) {
                         if (result.equals("success")) {
                             // token校验正确,创建局部会话
                             // token校验正确,创建局部会话
-                            RedisUtil.set(sessionId + "_token", token);
+                            RedisUtil.set(ZHENG_UPMS_CLIENT_SESSION_ID + "_" + clientSessionId, token);
                             // 保存token对应的局部会话sessionId,方便退出登录操作
                             // 保存token对应的局部会话sessionId,方便退出登录操作
-                            RedisUtil.getJedis().sadd(token + "_subSessionIds", sessionId);
-                            _log.info("当前token={},对应的注册系统有:{}个", token, RedisUtil.getJedis().scard(token + "_subSessionIds"));
+                            RedisUtil.getJedis().sadd(ZHENG_UPMS_CLIENT_SESSION_IDS + "_" + token, clientSessionId);
+                            _log.info("当前token={},对应的注册系统个数:{}个", token, RedisUtil.getJedis().scard(ZHENG_UPMS_CLIENT_SESSION_IDS + "_" + token));
                             // 移除url中的token参数
                             // 移除url中的token参数
                             String backUrl = RequestParameterUtil.getParameterWithOutToken(request);
                             String backUrl = RequestParameterUtil.getParameterWithOutToken(request);
                             // 返回请求资源
                             // 返回请求资源
@@ -108,7 +116,7 @@ public class SSOFilter implements Filter {
                 // 跳转认证中心登录页
                 // 跳转认证中心登录页
             }
             }
             // 无token,跳转sso-server认证中心登录,并带上回调地址和系统名称参数
             // 无token,跳转sso-server认证中心登录,并带上回调地址和系统名称参数
-            sso_server_url.append("/index").append("?").append(SYSTEM_NAME).append("=").append(filterConfig.getInitParameter(SYSTEM_NAME));
+            sso_server_url.append("/sso/index").append("?").append(SYSTEM_NAME).append("=").append(filterConfig.getInitParameter(SYSTEM_NAME));
             StringBuffer backurl = request.getRequestURL();
             StringBuffer backurl = request.getRequestURL();
             String queryString = request.getQueryString();
             String queryString = request.getQueryString();
             if (!StringUtils.isEmpty(queryString)) {
             if (!StringUtils.isEmpty(queryString)) {

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/ManageController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/ManageController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller;
+package com.zheng.upms.server.controller;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsSystem;
 import com.zheng.upms.dao.model.UpmsSystem;

+ 51 - 57
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/SSOController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/SSOController.java

@@ -1,9 +1,9 @@
-package com.zheng.upms.admin.controller;
+package com.zheng.upms.server.controller;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.common.util.CookieUtil;
 import com.zheng.common.util.CookieUtil;
 import com.zheng.common.util.RedisUtil;
 import com.zheng.common.util.RedisUtil;
-import com.zheng.upms.admin.util.SystemConstant;
+import com.zheng.upms.server.util.SystemConstant;
 import com.zheng.upms.dao.model.UpmsSystemExample;
 import com.zheng.upms.dao.model.UpmsSystemExample;
 import com.zheng.upms.rpc.api.UpmsSystemService;
 import com.zheng.upms.rpc.api.UpmsSystemService;
 import com.zheng.upms.rpc.api.UpmsUserService;
 import com.zheng.upms.rpc.api.UpmsUserService;
@@ -42,7 +42,14 @@ public class SSOController extends BaseController {
 
 
 	private final static Logger _log = LoggerFactory.getLogger(SSOController.class);
 	private final static Logger _log = LoggerFactory.getLogger(SSOController.class);
 	private final static int TIMEOUT = 2 * 60 * 60;
 	private final static int TIMEOUT = 2 * 60 * 60;
+	// 全局会话key
 	private final static String ZHENG_UPMS_SERVER_SESSION_ID = "zheng-upms-server-session-id";
 	private final static String ZHENG_UPMS_SERVER_SESSION_ID = "zheng-upms-server-session-id";
+	// token key
+	private final static String ZHENG_UPMS_SERVER_TOKEN = "zheng-upms-server-token";
+	// 局部会话key
+	private final static String ZHENG_UPMS_CLIENT_SESSION_ID = "zheng-upms-client-session-id";
+	// 单点同一个token所有局部会话key
+	private final static String ZHENG_UPMS_CLIENT_SESSION_IDS = "zheng-upms-client-session-ids";
 
 
 	@Autowired
 	@Autowired
 	UpmsSystemService upmsSystemService;
 	UpmsSystemService upmsSystemService;
@@ -57,7 +64,7 @@ public class SSOController extends BaseController {
 	 * @throws Exception
 	 * @throws Exception
 	 */
 	 */
 	@RequestMapping(value = "/index", method = RequestMethod.GET)
 	@RequestMapping(value = "/index", method = RequestMethod.GET)
-	public String index(HttpServletRequest request, HttpServletResponse response) throws Exception {
+	public String index(HttpServletRequest request) throws Exception {
 		String system_name = request.getParameter("system_name");
 		String system_name = request.getParameter("system_name");
 		String backurl = request.getParameter("backurl");
 		String backurl = request.getParameter("backurl");
 
 
@@ -68,29 +75,9 @@ public class SSOController extends BaseController {
 		int count = upmsSystemService.countByExample(upmsSystemExample);
 		int count = upmsSystemService.countByExample(upmsSystemExample);
 		if (StringUtils.isEmpty(system_name) || 0 == count) {
 		if (StringUtils.isEmpty(system_name) || 0 == count) {
 			_log.info("未注册的系统:{}", system_name);
 			_log.info("未注册的系统:{}", system_name);
-			return "/404";
+			return "/500";
 		}
 		}
-		// 分配单点登录sessionId,不使用session获取会话id,改为cookie,防止session丢失
-		String sessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
-		if (StringUtils.isEmpty(sessionId)) {
-			sessionId = request.getSession().getId();
-			CookieUtil.setCookie(response, ZHENG_UPMS_SERVER_SESSION_ID, sessionId);
-		}
-		// 判断是否存在全局会话
-		// 未登录
-		if (StringUtils.isEmpty(RedisUtil.get(sessionId + "_token"))) {
-			return "redirect:/sso/login?backurl=" + URLEncoder.encode(backurl, "utf-8");
-		}
-		// 已登录
-		String token = RedisUtil.get(sessionId + "_token");
-		String redirectUrl = backurl;
-		if (backurl.contains("?")) {
-			redirectUrl += "&token=" + token;
-		} else {
-			redirectUrl += "?token=" + token;
-		}
-		_log.info("认证中心验证为已登录,跳回:{}", redirectUrl);
-		return "redirect:" + redirectUrl;
+		return "redirect:/sso/login?backurl=" + URLEncoder.encode(backurl, "utf-8");
 	}
 	}
 
 
 	/**
 	/**
@@ -98,24 +85,31 @@ public class SSOController extends BaseController {
 	 * @return
 	 * @return
 	 */
 	 */
 	@RequestMapping(value = "/login", method = RequestMethod.GET)
 	@RequestMapping(value = "/login", method = RequestMethod.GET)
-	public String login(HttpServletRequest request) {
-		String sessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
-		_log.info("认证中心sessionId={}", sessionId);
+	public String login(HttpServletRequest request, HttpServletResponse response) {
+		// 分配单点登录sessionId,首次获取后缓存到cookie,防止session丢失
+		String serverSessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
+		if (StringUtils.isEmpty(serverSessionId)) {
+			serverSessionId = request.getSession().getId();
+			CookieUtil.setCookie(response, ZHENG_UPMS_SERVER_SESSION_ID, serverSessionId);
+		}
+		// 有回跳路径的访问判断是否已登录,如果已登录,则回跳
 		String backurl = request.getParameter("backurl");
 		String backurl = request.getParameter("backurl");
-		if (!StringUtils.isEmpty(sessionId) && !StringUtils.isEmpty(backurl)) {
-			String token = RedisUtil.get(sessionId + "_token");
-			// token校验值
-			if (!StringUtils.isEmpty(token)) {
-				// 回调子系统
-				String redirectUrl = backurl;
+		String token = RedisUtil.get(ZHENG_UPMS_SERVER_SESSION_ID + "_" + serverSessionId);
+		// token校验值
+		if (!StringUtils.isEmpty(token)) {
+			// 回跳
+			String redirectUrl = backurl;
+			if (StringUtils.isEmpty(backurl)) {
+				redirectUrl = "/";
+			} else {
 				if (backurl.contains("?")) {
 				if (backurl.contains("?")) {
 					redirectUrl += "&token=" + token;
 					redirectUrl += "&token=" + token;
 				} else {
 				} else {
 					redirectUrl += "?token=" + token;
 					redirectUrl += "?token=" + token;
 				}
 				}
-				_log.info("认证中心帐号通过,带token回跳:{}", redirectUrl);
-				return "redirect:" + redirectUrl;
 			}
 			}
+			_log.info("认证中心帐号通过,带token回跳:{}", redirectUrl);
+			return "redirect:" + redirectUrl;
 		}
 		}
 		return "/sso/login";
 		return "/sso/login";
 	}
 	}
@@ -148,7 +142,7 @@ public class SSOController extends BaseController {
 		Subject subject = SecurityUtils.getSubject();
 		Subject subject = SecurityUtils.getSubject();
 		UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
 		UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(username, password);
 		try {
 		try {
-			usernamePasswordToken.setRememberMe(false);
+			usernamePasswordToken.setRememberMe(true);
 			subject.login(usernamePasswordToken);
 			subject.login(usernamePasswordToken);
 		} catch (UnknownAccountException e) {
 		} catch (UnknownAccountException e) {
 			result.put("result", false);
 			result.put("result", false);
@@ -163,18 +157,18 @@ public class SSOController extends BaseController {
 			result.put("data", SystemConstant.INVALID_ACCOUNT);
 			result.put("data", SystemConstant.INVALID_ACCOUNT);
 			return result;
 			return result;
 		}
 		}
-		// 分配单点登录sessionId,不使用session获取会话id,改为cookie,防止session丢失
-		String sessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
-		if (StringUtils.isEmpty(sessionId)) {
-			sessionId = request.getSession().getId();
-			CookieUtil.setCookie(response, ZHENG_UPMS_SERVER_SESSION_ID, sessionId);
+		// 分配单点登录sessionId,首次获取后缓存到cookie,防止session丢失
+		String serverSessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
+		if (StringUtils.isEmpty(serverSessionId)) {
+			serverSessionId = request.getSession().getId();
+			CookieUtil.setCookie(response, ZHENG_UPMS_SERVER_SESSION_ID, serverSessionId);
 		}
 		}
 		// 默认验证帐号密码正确,创建token
 		// 默认验证帐号密码正确,创建token
 		String token = UUID.randomUUID().toString();
 		String token = UUID.randomUUID().toString();
 		// 全局会话sessionId
 		// 全局会话sessionId
-		RedisUtil.set(sessionId + "_token", token, TIMEOUT);
+		RedisUtil.set(ZHENG_UPMS_SERVER_SESSION_ID + "_" + serverSessionId, token, TIMEOUT);
 		// token校验值
 		// token校验值
-		RedisUtil.set(token, token, TIMEOUT);
+		RedisUtil.set(ZHENG_UPMS_SERVER_TOKEN + "_" + token, token, TIMEOUT);
 		// 回调子系统
 		// 回调子系统
 		if (StringUtils.isEmpty(backurl)) {
 		if (StringUtils.isEmpty(backurl)) {
 			result.put("result", true);
 			result.put("result", true);
@@ -202,7 +196,7 @@ public class SSOController extends BaseController {
 	@ResponseBody
 	@ResponseBody
 	public String token(HttpServletRequest request) {
 	public String token(HttpServletRequest request) {
 		String tokenParam = request.getParameter("token");
 		String tokenParam = request.getParameter("token");
-		String token = RedisUtil.get(tokenParam);
+		String token = RedisUtil.get(ZHENG_UPMS_SERVER_TOKEN + "_" + tokenParam);
 		if (StringUtils.isEmpty(tokenParam) || !tokenParam.equals(token)) {
 		if (StringUtils.isEmpty(tokenParam) || !tokenParam.equals(token)) {
 			return "failed";
 			return "failed";
 		}
 		}
@@ -219,24 +213,24 @@ public class SSOController extends BaseController {
 	public String logout(HttpServletRequest request, HttpServletResponse response) {
 	public String logout(HttpServletRequest request, HttpServletResponse response) {
 		// shiro退出登录
 		// shiro退出登录
 		SecurityUtils.getSubject().logout();
 		SecurityUtils.getSubject().logout();
-		// 清除单点sessionId
-		CookieUtil.removeCookie(response, ZHENG_UPMS_SERVER_SESSION_ID);
 
 
-		String sessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
-		// 当前全局会话sessionId
-		String token = RedisUtil.get(sessionId + "_token");
+		String serverSessionId = CookieUtil.getCookie(request, ZHENG_UPMS_SERVER_SESSION_ID);
+		// 当前全局会话token
+		String token = RedisUtil.get(ZHENG_UPMS_SERVER_SESSION_ID + "_" + serverSessionId);
 		// 清除全局会话
 		// 清除全局会话
-		RedisUtil.remove(sessionId + "_token");
+		RedisUtil.remove(ZHENG_UPMS_SERVER_SESSION_ID + "_" + serverSessionId);
 		// 清除token校验值
 		// 清除token校验值
-		RedisUtil.remove(token);
+		RedisUtil.remove(ZHENG_UPMS_SERVER_TOKEN + "_" + token);
 		// 清除所有局部会话
 		// 清除所有局部会话
 		Jedis jedis = RedisUtil.getJedis();
 		Jedis jedis = RedisUtil.getJedis();
-		Set<String> subSessionIds = jedis.smembers(token + "_subSessionIds");
-		for (String subSessionId : subSessionIds) {
-			jedis.del(subSessionId + "_token");
-			jedis.srem(token + "_subSessionIds", subSessionId);
+		Set<String> clientSessionIds = jedis.smembers(ZHENG_UPMS_CLIENT_SESSION_IDS + "_" + token);
+		for (String clientSessionId : clientSessionIds) {
+			jedis.del(ZHENG_UPMS_CLIENT_SESSION_ID + "_" + clientSessionId);
+			jedis.srem(ZHENG_UPMS_CLIENT_SESSION_IDS + "_" + token, clientSessionId);
 		}
 		}
-		_log.info("当前token={},对应的注册系统还剩余:{}个", token, jedis.scard(token + "_subSessionIds"));
+		// 清除全局会话sessionId
+		CookieUtil.removeCookie(response, ZHENG_UPMS_SERVER_SESSION_ID);
+		_log.info("当前token={},对应的注册系统个数:{}个", token, jedis.scard(ZHENG_UPMS_CLIENT_SESSION_IDS + "_" + token));
 		// 跳回原地址
 		// 跳回原地址
 		String redirectUrl = request.getHeader("Referer");
 		String redirectUrl = request.getHeader("Referer");
 		_log.info("跳回退出登录请求地址:{}", redirectUrl);
 		_log.info("跳回退出登录请求地址:{}", redirectUrl);

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/manage/UpmsOrganizationController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsOrganizationController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller.manage;
+package com.zheng.upms.server.controller.manage;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsOrganization;
 import com.zheng.upms.dao.model.UpmsOrganization;

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/manage/UpmsPermissionController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsPermissionController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller.manage;
+package com.zheng.upms.server.controller.manage;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsPermission;
 import com.zheng.upms.dao.model.UpmsPermission;

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/manage/UpmsRoleController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsRoleController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller.manage;
+package com.zheng.upms.server.controller.manage;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsRole;
 import com.zheng.upms.dao.model.UpmsRole;

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/manage/UpmsSystemController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsSystemController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller.manage;
+package com.zheng.upms.server.controller.manage;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsSystem;
 import com.zheng.upms.dao.model.UpmsSystem;

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/controller/manage/UpmsUserController.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsUserController.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.controller.manage;
+package com.zheng.upms.server.controller.manage;
 
 
 import com.zheng.common.base.BaseController;
 import com.zheng.common.base.BaseController;
 import com.zheng.upms.dao.model.UpmsUser;
 import com.zheng.upms.dao.model.UpmsUser;

+ 46 - 0
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/interceptor/UpmsLoginInterceptor.java

@@ -0,0 +1,46 @@
+package com.zheng.upms.server.interceptor;
+
+import com.zheng.upms.dao.model.UpmsUser;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 登录信息拦截器
+ * Created by shuzheng on 2017/2/11.
+ */
+public class UpmsLoginInterceptor extends HandlerInterceptorAdapter {
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        // 过滤ajax
+        if (null != request.getHeader("X-Requested-With") && request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
+            return true;
+        }
+        // 登录信息
+        Subject subject = SecurityUtils.getSubject();
+        UpmsUser upmsUser = (UpmsUser) subject.getPrincipal();
+        request.setAttribute("upmsUser", upmsUser);
+        return true;
+    }
+
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+        super.postHandle(request, response, handler, modelAndView);
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+        super.afterCompletion(request, response, handler, ex);
+    }
+
+    @Override
+    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        super.afterConcurrentHandlingStarted(request, response, handler);
+    }
+
+}

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/realm/UpmsRealm.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/realm/UpmsRealm.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.realm;
+package com.zheng.upms.server.realm;
 
 
 import com.zheng.common.util.MD5Util;
 import com.zheng.common.util.MD5Util;
 import com.zheng.upms.dao.model.UpmsUser;
 import com.zheng.upms.dao.model.UpmsUser;

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/admin/util/SystemConstant.java → zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/util/SystemConstant.java

@@ -1,4 +1,4 @@
-package com.zheng.upms.admin.util;
+package com.zheng.upms.server.util;
 
 
 /**
 /**
  * Created by shuzheng on 2017/1/19.
  * Created by shuzheng on 2017/1/19.

+ 7 - 4
zheng-upms/zheng-upms-server/src/main/resources/applicationContext-shiro.xml

@@ -6,13 +6,15 @@
 
 
     <description>zheng-upms</description>
     <description>zheng-upms</description>
 
 
-    <!--设置自定义realm,继承自AuthorizingRealm -->
-    <bean id="upmsRealm" class="com.zheng.upms.admin.realm.UpmsRealm"></bean>
+    <!-- realm实现,继承自AuthorizingRealm -->
+    <bean id="upmsRealm" class="com.zheng.upms.server.realm.UpmsRealm"></bean>
 
 
+    <!-- 安全管理器 -->
     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
     <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
         <property name="realm" ref="upmsRealm"/>
         <property name="realm" ref="upmsRealm"/>
     </bean>
     </bean>
 
 
+    <!-- Shiro的Web过滤器 -->
     <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
     <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
         <property name="securityManager" ref="securityManager"/>
         <property name="securityManager" ref="securityManager"/>
         <property name="loginUrl" value="/sso/login"/>
         <property name="loginUrl" value="/sso/login"/>
@@ -38,9 +40,10 @@
         <property name="arguments" ref="securityManager"/>
         <property name="arguments" ref="securityManager"/>
     </bean>
     </bean>
 
 
-    <!-- @RequiresPermissions注解支持 -->
-    <!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
+    <!-- Shiro生命周期处理器-->
     <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
     <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
+
+    <!-- @RequiresPermissions注解支持 -->
     <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
     <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
     <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
     <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
         <property name="securityManager" ref="securityManager"/>
         <property name="securityManager" ref="securityManager"/>

+ 1 - 1
zheng-upms/zheng-upms-server/src/main/resources/springMVC-servlet.xml

@@ -16,7 +16,7 @@
 		<!-- 获取登录信息 -->
 		<!-- 获取登录信息 -->
 		<mvc:interceptor>
 		<mvc:interceptor>
 			<mvc:mapping path="/manage/**" />
 			<mvc:mapping path="/manage/**" />
-			<bean class="com.zheng.upms.interceptor.UpmsLoginInterceptor"></bean>
+			<bean class="com.zheng.upms.server.interceptor.UpmsLoginInterceptor"></bean>
 		</mvc:interceptor>
 		</mvc:interceptor>
 	</mvc:interceptors>
 	</mvc:interceptors>