Procházet zdrojové kódy

Update 调整鉴权逻辑兼容小程序登录鉴权

YueYunyun před 2 roky
rodič
revize
d96153300d

+ 6 - 1
VB_DSM_V2.1/vbdsm-common/vbdsm-base/src/main/java/cn/vbdsm/common/interceptors/AuthInterceptor.java

@@ -126,7 +126,12 @@ public class AuthInterceptor extends HandlerInterceptorAdapter {
 			log.info("超级管理员,不受权限限制。");
 			return true;
 		}
-		
+
+		// 如果 请求头有 Authorization 则代表是小程序请求,直接通过
+		String userkey =  request.getHeader("Authorization");
+		if(userkey != null){
+			return true;
+		}
 		
 		//检测方法命名是否合法
 		boolean isPerm = false;

+ 10 - 0
VB_DSM_V2.1/vbdsm-common/vbdsm-base/src/main/java/cn/vbdsm/common/interceptors/LoginInterceptor.java

@@ -132,6 +132,16 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
 			//先判断session是否有值,如果有值则认为是已经登录,往下执行
 			//如果session中没有值,则从统一认证服务取值
 			String userkey = CookiesUtil.loadCookie(SystemConstant.SYSTEM_LOGIN_COOKIE, request);
+			if(userkey==null){
+				userkey =  request.getHeader("Authorization");
+				if(userkey != null){
+					if(userkey.startsWith("Bearer ")){
+						userkey= userkey.substring(7);
+					}else if(userkey.isEmpty()){
+						userkey= null;
+					}
+				}
+			}
 			if(userkey == null && !isAccessPath){
 				request.getSession().removeAttribute(SystemConstant.SYSTEM_LOGIN_FLAG);
 				log.warn("user not login,must forward to passport");

+ 10 - 1
VB_DSM_V2.1/vbdsm-common/vbdsm-base/src/main/java/cn/vbdsm/core/mvc/action/SystemAction.java

@@ -82,7 +82,16 @@ public class SystemAction extends BaseAction {
         try {
             Object userinfo = request.getSession().getAttribute(SystemConstant.SYSTEM_LOGIN_FLAG);
             String userkey = CookiesUtil.loadCookie(SystemConstant.SYSTEM_LOGIN_COOKIE, request);
-
+            if(userkey==null){
+                userkey =  request.getHeader("Authorization");
+                if(userkey != null){
+                    if(userkey.startsWith("Bearer ")){
+                        userkey= userkey.substring(7);
+                    }else if(userkey.isEmpty()){
+                        userkey= null;
+                    }
+                }
+            }
             if (null == userinfo || "".equals(userkey) || null == userkey) {
                 msg = new ResultMsg<Object>(SystemConstant.RESULT_STATUS_SUCCESS, "您已经不是登录状态,无须重复注销");
                 return super.callBackForJsonp(request, response, JSONObject.toJSONString(msg));

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

@@ -109,6 +109,7 @@ public class AuthAction extends BaseAction {
             writeCookie(request, response, result.getData());
         }
 
+        result.getData().put("token",authService.genUserkey( result.getData()));
         return super.callBackForJsonp(request, response, JSON.toJSONString(result));
     }