From 54a2167daee8db848926707a4736657989776e51 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 20 九月 2023 08:52:02 +0800
Subject: [PATCH] 代码提交

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java |   40 +++++++++++++++++++++++++---------------
 1 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
index fbedf76..69f5c13 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -3,8 +3,9 @@
 import com.alibaba.fastjson.JSON;
 import com.vci.ubcs.code.entity.TokenUserObject;
 import com.vci.ubcs.code.service.IPasswordFreeLoginService;
-import com.vci.ubcs.code.util.HttpUtils;
+import com.vci.ubcs.starter.util.HttpUtils;
 import io.jsonwebtoken.Claims;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.http.auth.AuthenticationException;
 import org.springblade.core.jwt.JwtUtil;
 import org.springblade.core.jwt.props.JwtProperties;
@@ -30,6 +31,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Logger;
 
 import static org.springblade.core.secure.utils.AuthUtil.parseJWT;
 
@@ -39,15 +41,23 @@
  * @date 2023/9/11 15:45
  */
 @Service
+@Slf4j
 public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService {
 
 	// 閫氳繃鏈嶅姟娉ㄥ唽涓績鑾峰彇缃戝叧鐨勭鍙e彿
 	@Autowired
 	private DiscoveryClient discoveryClient;
-	@Value("${user-info.pwd-free-tenant-id}")
+	// 閰嶇疆鐨勫厤瀵嗙櫥褰曠殑璐﹀彿鎵�灞炵殑绉熸埛id
+	@Value("${password-free.pwd-free-tenant-id}")
 	private String pwdFreeTenantId;
+	// 閰嶇疆鐨則oken鍦╮edis涓殑鐢熷瓨鏃堕棿
+	@Value("${password-free.token-redis-expire}")
+	private Long tokenRedisExpire;
+	@Value("${password-free.pwd-free-addr}")
+	private String pwdFreeAddr;
 	@Autowired
 	private BladeRedis bladeRedis;
+
 	// 缂撳瓨鍚�
 	public static final String PWD_FREE_LOGIN_TOKEN = "pwdFreeLogin:Token:";
 	private static JwtProperties jwtProperties;
@@ -68,22 +78,25 @@
 
 	/**
 	 * 鍏嶅瘑鐧诲綍锛屾敼鍙樺綋鍓峸ebservice璇锋眰鐨刪eader
-	 * @param username 璐﹀彿
+	 * @param userName 璐﹀彿
 	 * @return
 	 */
 	@Override
-	public boolean passwordFreeLogin(String username, ServletRequest servletRequest) throws AuthenticationException {
+	public boolean passwordFreeLogin(String userName, ServletRequest servletRequest) throws AuthenticationException {
 		//杩涙潵鍏堝垽鏂紦瀛樹腑鏄惁瀛樺湪token
 		// 璇锋眰鏉ヨ嚜宸卞摢涓猧p鍦板潃
 		HttpServletRequest request = (HttpServletRequest) servletRequest;
 		String ipAddr = request.getRemoteAddr();
 		// 鍏堝皾璇曚粠缂撳瓨褰撲腑鍙栵紝瀛樺湪灏辩洿鎺ヤ粠缂撳瓨涓幏鍙�
-		String authToken = bladeRedis.get(PWD_FREE_LOGIN_TOKEN+ipAddr);
-		BladeUser user = null;
+		String authToken = bladeRedis.get(PWD_FREE_LOGIN_TOKEN+ipAddr+":"+userName);
+		// 瑙f瀽token瀛樻斁杩沘ttr涓�
+		String token2 = JwtUtil.getToken(authToken);
+		BladeUser user = this.getUser(token2);
 		//涓嶅瓨鍦ㄥ氨璇锋眰
-		if(Func.isEmpty(authToken)){
+		if(Func.isEmpty(authToken) || Func.isEmpty(user)){
 			// 鍏嶅瘑鐧诲綍鎺ュ彛鍦板潃
-			String loginUrl = "http://localhost:"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
+			String loginUrl = "http://"+pwdFreeAddr+":"+this.getGatewayPort("ubcs-gateway")+"/ubcs-auth/oauth/token";
+			log.debug("褰撳墠鍏嶅瘑鐧诲綍璋冪敤鍦板潃锛�"+loginUrl);
 			// 璇锋眰ubcs-auth鏈嶅姟鑾峰彇token锛屽厛璁剧疆璇锋眰澶�
 			HttpHeaders headers = new HttpHeaders();
 			headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
@@ -91,7 +104,7 @@
 			headers.set("Tenant-Id", pwdFreeTenantId);
 			//璁剧疆璇锋眰浣撳弬鏁�
 			MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>();
-			parameters.add("username",username);
+			parameters.add("username",userName);
 			parameters.add("grant_type", "passwordfree");
 			parameters.add("scope", "all");
 			parameters.add("type", "account");
@@ -112,11 +125,10 @@
 			// 鎷兼帴token鏍煎紡
 			authToken = "bearer " + tokenUserObject.getAccess_token();
 			// 灏唗oken瀛樺叆缂撳瓨褰撲腑,杩囨湡鏃堕棿涓�24灏忔椂
-			bladeRedis.setEx(PWD_FREE_LOGIN_TOKEN+ipAddr,"bearer "+tokenUserObject.getAccess_token(),60*60*60*24L);
+			bladeRedis.setEx(PWD_FREE_LOGIN_TOKEN+ipAddr+":"+userName,"bearer "+tokenUserObject.getAccess_token(),tokenRedisExpire);
+			token2 = JwtUtil.getToken(authToken);
+			user = this.getUser(token2);
 		}
-		// 瑙f瀽token瀛樻斁杩沘ttr涓�
-		String token2 = JwtUtil.getToken(authToken);
-		user = this.getUser(token2);
 		//request.setAttribute("Blade-Auth",token);
 		request.setAttribute("_BLADE_USER_REQUEST_ATTR_",user);
 		return true;
@@ -181,11 +193,9 @@
 		if (StringUtil.isNotBlank(authToken)) {
 			token = JwtUtil.getToken(authToken);
 		}
-
 		if (StringUtil.isNotBlank(token)) {
 			claims = parseJWT(token);
 		}
-
 		if (ObjectUtil.isNotEmpty(claims) && getJwtProperties().getState()) {
 			tenantId = Func.toStr(claims.get("tenant_id"));
 			String userId = Func.toStr(claims.get("user_id"));

--
Gitblit v1.9.3