Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/granter/SocialTokenGranter.java
@@ -79,7 +79,7 @@ String source = socialProperties.getAlias().getOrDefault(sourceParameter, sourceParameter); // 开放平台授权码 String code = parameters.get("code"); // 开放平台状态吗 // 开放平台状态码 String state = parameters.get("state"); // 获取开放平台授权数据 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -63,9 +63,9 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService { /** * 允许错误次数 * 默认允许错误次数 */ //public static final Integer FAIL_COUNT = 5; public static final Integer FAIL_COUNT = 5; public static final String FAIL_COUNT_VALUE = "account.failCount"; /** @@ -78,7 +78,6 @@ private final BladeRedis bladeRedis; private final JwtProperties jwtProperties; /** * 超级管理员信息 @@ -126,14 +125,13 @@ // 判断登录是否锁定 int count = getFailCount(tenantId, username); //为防止取值为空报错的情况,当为空的时候给默认只为5次便锁定用户登录,但是一般很难出现这种情况,因为我feign里面是给了默认密码策略查询的 int failCountValue = Func.isEmpty(strategy) ? 5:Func.toInt(strategy.getLockingNum()); int failCountValue = Func.isEmpty(strategy) ? FAIL_COUNT:Func.toInt(strategy.getLockingNum()); int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), failCountValue); if (count >= failCount) { throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS); } // 将请求头放进线程中 //超级管理员配置文件配置账号密码,实现登录, 默认租户id为000000 if(tenantId.equals(this.tenantId)){ if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) { Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -283,7 +283,7 @@ } // 判断是否为引用码段,如果是应用码段的话,为了适配前端组件,这里要对表进行处理一下,按照以前的参照格式进行转换 codeBasicSecDO.setReferValueInfo(referConfigToUIUiTable(codeReferConfigVO)); if(codeReferConfigVO.getIsPersistence()=="true"){ if(Func.toBoolean(codeReferConfigVO.getIsPersistence())){ codeReferConfigService.insert(codeReferConfigVO); } } @@ -324,8 +324,11 @@ BeanUtil.copy(showField,tableColVO); tableColVO.setSortField(showField.getAttrSortField()); uiTableFieldVOs.add(tableColVO); if(showField.getIsQuery().equals("true")){ queryColumns.add(tableColVO); if(Func.toBoolean(showField.getIsQuery())){ TableColVO tableQueryColumns = new TableColVO(); BeanUtil.copy(showField,tableQueryColumns); tableColVO.setSortField(showField.getAttrSortField()); queryColumns.add(tableQueryColumns); } }); } Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
@@ -1,9 +1,17 @@ package com.vci.ubcs.code.service.impl; import com.vci.ubcs.code.service.IPasswordFreeLoginService; import org.apache.commons.collections4.MultiValuedMap; import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.http.HttpMethod; import org.springframework.web.client.RestTemplate; /** * 免密登录服务 @@ -13,16 +21,41 @@ @Service public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService { private RestTemplate restTemplate; /** * 免密登录方法 * 免密登录 * @param account 账号 * @return */ @Override public boolean passwordFreeLogin(String account) { // 免密登录接口地址 String loginUrl = "http://ubcs-auth/auth/login"; // 设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //设置请求体参数 MultiValueMap<String,String> bodyParams = new LinkedMultiValueMap<String,String>(); bodyParams.add("account",account); // 创建请求实体 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(bodyParams, headers); // 发送POST请求 ResponseEntity<String> responseEntity = restTemplate.exchange(loginUrl, HttpMethod.POST, requestEntity, String.class); String responseBody = responseEntity.getBody(); //拿到响应体将token存入到redis中,以account作为存储的key // 解析响应体获取令牌 // 这里假设响应体是JSON格式,包含一个名为"token"的字段 // 根据实际情况进行解析 // JSONObject json = new JSONObject(responseBody); // String token = json.getString("token"); return false; }